reg pattern
(?:pattern)匹配 “industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern)零宽度匹配 “Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配 “Windows3.1”中的“Windows”。
(?!pattern)零宽度非匹配 “Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中 的“Windows”。
(?<=pattern)反向零宽度匹配 “(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
(?<!pattern)反向零宽度非匹配 “(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。
特殊用法:当"Windows"换成""时,
"(?=95|98|NT|2000)" 匹配95|98|NT|2000开头的内容
"(?!95|98|NT|2000)" 匹配非95|98|NT|2000开头的内容
\b\w*q[^u]\w*\b匹配包含后面不是字母u的字母q的单词。但是如果多做测试(或者你思维足够敏锐,直接就观察出来了),你会发现,如果q出现在单
词的结尾的话,像Iraq,Benq,这个表达式就会出错。这是因为[^u]总要匹配一个字符,所以如果q是单词的最后一个字符的话,后面的[^u]将会
匹配q后面的单词分隔符(可能是空格,或者是句号或其它的什么),后面的\w*\b将会匹配下一个单词,于是\b\w*q[^u]\w*\b就能匹配
整个Iraq fighting。负向零宽断言能解决这样的问题,因为它只匹配一个位置,并不消费任何字符。,我们可以这样来解决这个
问题:\b\w*q(?!u)\w*\b。
\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字;\b((?!abc)\w)+\b匹配不包含连续字符串abc的单词。
用(?<!exp),零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp:(?<![a-z])\d{7}匹配前面不是小写字母的七位数字。
单词倒排
对字符串中的所有单词进行倒排。
说明:每个单词是以26个大写或小写英文字母构成,’-‘做为单词连接符使用时,视为单词的一部分,但在一个单词中只能连续一次,连续出现2个’-’以上时视为分隔符,如“aa--bb”中的“—”视为分隔符,2个单词为“aa”和“bb”,非构成单词的字符均视为单词间隔符。要求倒排后的单词间隔符以空格表示,原字符串中相邻单词间有多个间隔符时,倒排转换后只允许出现一个空格间隔符。每个单词最长20个字母。
String regex = "(?!(?<=[a-zA-Z]+)-(?=[a-zA-Z]+))[^a-zA-Z]+";
() 将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。
希望把 asdadas123asdasdas456asdasdasd789asdasd
替换为:asdadas[123]asdasdas[456]asdasdasd[789]asdasd
在替换对话框里面,勾选“正则表达式”复选框;
在查找内容里面输入“([0-9])([0-9])([0-9])”,不含引号
“替换为:”里面输入“[\1\2\3]”,不含引号
或者查找([0-9]+) 替换:[\1] 更简单通用些

浙公网安备 33010602011771号