【发布时间】:2011-10-23 15:45:49
【问题描述】:
我在使用正则表达式中的嵌套“+”/“-”前瞻/后视时遇到问题。
假设我想用'%' 更改字符串中的'*',假设'\' 转义下一个字符。 (将正则表达式转换为 sql 之类的命令 ^^)。
所以字符串
-
'*test*'应该改为'%test%', -
'\\*test\\*'->'\\%test\\%',但是 -
'\*test\*'和'\\\*test\\\*'应该保持不变。
我试过了:
(?<!\\)(?=\\\\)*\* but this doesn't work
(?<!\\)((?=\\\\)*\*) ...
(?<!\\(?=\\\\)*)\* ...
(?=(?<!\\)(?=\\\\)*)\* ...
与上述示例中的“*”匹配的正确正则表达式是什么?
(?<!\\(?=\\\\)*)\* 和 (?=(?<!\\)(?=\\\\)*)\* 之间有什么区别,或者如果这些本质上是错误的,那么具有这种视觉结构的正则表达式之间的区别是什么?
【问题讨论】:
-
您使用什么语言?你真的希望
\*test\*保持不变而不是变成*test*?
标签: regex perl lookahead lookbehind regex-lookarounds