我是正则表达式的新手。
什么是表达式,它会找到以3位数字开头的长字符串,并在大写单词的开头放置空格:
REPLACE:
013TheBlueCowJumpedOverTheFence1984.jpg
使用:
013 The Blue Cow Jumped Over The Fence 1984
注意:删除末尾的.jpg
这将节省我的时间。
答案 0 :(得分:1)
我不会将正则表达式用于此任务。这将是丑陋的,难以维护。一种更好的方法是循环遍历字符串并根据您的输入重建字符串。
string retVal = "";
foreach(char s in myInput){
if(IsCapitol(s)){
reVal += " " + s;
}
//insert the rest of your conditions
}
答案 1 :(得分:0)
尝试使用此正则表达式\d+|[A-Z][a-z]*
它将收集所有匹配项,您必须使用spases
加入它们答案 2 :(得分:0)
匹配
'[A-Z][a-z]*'
替换为
' \0'
请注意,这不会在1984年之前放置空格,也不会删除.jpg。 您可以通过匹配
来完成前者'[0-9]+|[A-Z][a-z]*'
代替。后者通过在单独的指令中删除它,例如使用正则表达式替换'\.jpg$
'和''
请注意,\
需要以多种语言编写为\\
。
答案 3 :(得分:0)
这需要两次操作,因为每种操作的替换都不同。
第一个:
/(((?<![\d])\d)|((?<![A-Z])[A-Z](?![A-Z])))/
替换为:' $1'
(注意空格)
在单词之间放置空格。第二个:
/\s*(.*)\s*\..*$/
替换为:'$1'
将删除尾随空格和扩展名。
第一个表达式可以被分成几个部分:(?<![\d])\d
找到一个前面没有另一个数字的数字,第二个表达式:((?<![A-Z])[A-Z](?![A-Z]))
找到一个不在大写字母前面或后面的大写字母。
您可能会有更多规则需要合并到此中,例如您如何处理字符串:'BackInTheUSSR.jpg'
?
编辑:这应该处理该示例:
/(((?<![\d])\d)|((?<![A-Z])[A-Z](?![A-Z]))|((?<![A-Z])[A-Z]+(?![a-z])))/