本文目录一览:
正则表达式从文件路径中提取文件名
String input = "D:\\save\\任意文件名.pdf";
String regex = ".*\\\\([^\\.]+)\\..*";
input.replaceAll(regex, "$1");
怎么用正则表达式修改文件名?
终于找到答案了!!!
请注意你用的是全角字符还是半角字符,如果你原来的文件名有小括号之类的符号,就注意一下它们的格式必须与正则表达式的格式完全一致才能完成。你可以用《拖把更名器
》的说明文件里的例子试试,我是成功了,希望让大家都能会。
如何用正则表达式修改文件名?
用正则表达式的方式来修改文件名,有多种方法,如:可以用脚本语言(vbs等)、高级程序语言(vb、delphi 等)编写代码。
如果只是单纯使用正则,达到修改文件名的功能,可以考虑使用专门的工具,如:Bulk Rename Utility 批量修改文件名工具软件:
kettle 正则表达式 获取文件名
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
struct PCB {
char NAME[10]; /*进程名*/
int ROUND; /*进程轮转时间片*/
int REACHTIME; /*进程到达时间*/
int CPUTIME; /*进程占用CPU时间*/
int COUNT; /*计数器*/
int NEEDTIME; /*进程完成还要的CPU时间*/
char STATE; /*进程的状态*/
struct PCB *NEXT; /*链指针*/
};
struct LINK { /*PCB的链结构*/
struct PCB *RUN; /*当前运行进程指针*/
struct PCB *READY; /*就绪队列头指针*/
struct PCB *TAIL; /*就绪队列尾指针*/
struct PCB *FINISH; /*完成队列头指针*/
};
void INIT(LINK *); /*对PCB的链结构初始化*/
void INSERT(LINK *); /*将执行了一个单位时间片数且还未完成的进程的PCB插到就绪队列的队尾*/
void FIRSTIN(LINK *); /*将就绪队列中的第一个进程投入运行*/
void PRINT(LINK *); /*打印每执行一个时间片后的所有进程的状态*/
void PR(PCB *); /*打印一个进程的状态*/
int CREATE(LINK *,int); /*创建新的进程*/
void ROUNDSCH(LINK *); /*按时间片轮转法调度进程*/
void main() {
LINK pcbs;
int i;
INIT(pcbs);
i=0;
printf("创建5个进程\n\n");
while(i5) {
if(CREATE(pcbs,i+1)==1) {
printf("进程已创建\n\n");
i++;
}
else
printf("进程创建失败\n\n");
}
FIRSTIN(pcbs);
ROUNDSCH(pcbs);
}
void ROUNDSCH(LINK *p) {
PCB *pcb;
while(p-RUN!=NULL) {
pcb=(PCB *)malloc(sizeof(PCB));
strcpy(pcb-NAME,p-RUN-NAME);
pcb-ROUND=p-RUN-ROUND;
pcb-REACHTIME=p-RUN-REACHTIME;
pcb-CPUTIME=p-RUN-CPUTIME;
pcb-COUNT=p-RUN-COUNT;
pcb-NEEDTIME=p-RUN-NEEDTIME;
pcb-STATE=p-RUN-STATE;
pcb-NEXT=p-RUN-NEXT;
pcb-CPUTIME++;
pcb-NEEDTIME--;
pcb-COUNT++;
if(pcb-NEEDTIME==0) {
pcb-NEXT=p-FINISH-NEXT;
p-FINISH-NEXT=pcb;
pcb-STATE='F';
p-RUN=NULL;
if(p-READY!=p-TAIL)
FIRSTIN(p);
}
else {
p-RUN=pcb;
if(pcb-COUNT==pcb-ROUND) {
pcb-COUNT=0;
if(p-READY!=p-TAIL) {
pcb-STATE='W';
INSERT(p);
FIRSTIN(p);
}
}
}
PRINT(p);
}
}
void INIT(LINK *p) {
p-RUN=NULL;
p-TAIL=p-READY=(PCB *)malloc(sizeof(PCB));
p-READY-NEXT=NULL;
p-FINISH=(PCB *)malloc(sizeof(PCB));
p-FINISH-NEXT=NULL;
}
int CREATE(LINK *p,int n) {
PCB *pcb,*q;
pcb=(PCB *)malloc(sizeof(PCB));
flushall();
printf("请输入第%d个进程的名称:\n",n);
gets(pcb-NAME);
printf("请输入第%d个进程的轮转时间片数:\n",n);
scanf("%d",(pcb-ROUND));
printf("请输入第%d个进程的到达时间:\n",n);
scanf("%d",(pcb-REACHTIME));
pcb-CPUTIME=0;
pcb-COUNT=0;
printf("请输入第%d个进程需运行的时间片数:\n",n);
scanf("%d",(pcb-NEEDTIME));
pcb-STATE='W';
pcb-NEXT=NULL;
if(strcmp(pcb-NAME,"")==0||pcb-ROUND=0||pcb-NEEDTIME=0) /*输入错误*/
return 0;
q=p-READY;
while(q-NEXT!=NULLq-NEXT-REACHTIME=pcb-REACHTIME)
q=q-NEXT;
pcb-NEXT=q-NEXT;
q-NEXT=pcb;
if(pcb-NEXT==NULL)
p-TAIL=pcb;
return 1;
}
void FIRSTIN(LINK *p) {
PCB *q;
q=p-READY-NEXT;
p-READY-NEXT=q-NEXT;
q-NEXT=NULL;
if(p-READY-NEXT==NULL)
p-TAIL=p-READY;
q-STATE='R';
p-RUN=q;
}
void INSERT(LINK *p) {
PCB *pcb;
pcb=(PCB *)malloc(sizeof(PCB));
strcpy(pcb-NAME,p-RUN-NAME);
pcb-ROUND=p-RUN-ROUND;
pcb-REACHTIME=p-RUN-REACHTIME;
pcb-CPUTIME=p-RUN-CPUTIME;
pcb-COUNT=p-RUN-COUNT;
pcb-NEEDTIME=p-RUN-NEEDTIME;
pcb-STATE=p-RUN-STATE;
pcb-NEXT=p-RUN-NEXT;
p-TAIL-NEXT=pcb;
p-TAIL=pcb;
p-RUN=NULL;
pcb-STATE='W';
}
void PRINT(LINK *p) {
PCB *pcb;
printf("执行一个时间片后的所有进程的状态:\n\n");
if(p-RUN!=NULL)
PR(p-RUN);
if(p-READY!=p-TAIL) {
pcb=p-READY-NEXT;
while(pcb!=NULL) {
PR(pcb);
pcb=pcb-NEXT;
}
}
pcb=p-FINISH-NEXT;
while(pcb!=NULL) {
PR(pcb);
pcb=pcb-NEXT;
}
}
void PR(PCB *p) {
printf("进程名:%s\n",p-NAME);
printf("进程轮转时间片:%d\n",p-ROUND);
printf("进程到达时间:%d\n",p-REACHTIME);
printf("进程占用CPU时间:%d\n",p-CPUTIME);
printf("计数器:%d\n",p-COUNT);
printf("进程完成还要的CPU时间:%d\n",p-NEEDTIME);
printf("进程的状态:%c\n\n",p-STATE);
}
正则表达式匹配文件名
你其实要求的是只要是.doc后缀就行。
script language="JavaScript"
!--
var s = "abc.def.txt.doc";
var regex = /^(.)+\.doc$/;
var matchFlag = regex.test(s);
alert(matchFlag);
//--
/script