所以我有正则表达式,只找到偶数个转义字符和星号:(\\\\)+([*])
。问题是它没有选择第一个星号并且它选择所有行(我需要正则表达式会尝试"计算"连续行中的所有转义字符,选择具有偶数转义数的行并将星号替换为百分之字符。
为了清楚起见,我将添加一张照片,显示我正在尝试实现的任务。 https://postimg.org/image/b51v5qhkz/
答案 0 :(得分:1)
我建议使用^
在匹配字符串开头处锚定匹配项,然后匹配\
以外的任何符号,然后匹配零个或多个double \
序列,捕获所有这些进入一个小组,直到星号。
^([^\\]*(?:\\\\)*)\*
请参阅regex demo(请注意,演示中的\n
是为了演示而添加的,因为输入是多行字符串。如果要处理单独的字符串,则不需要{在\n
)内{1}}。
击穿:
[^\\]
- 字符串开头^
- 第1组捕获
([^\\]*(?:\\\\)*)
- 除[^\\]*
\
- 0 + (?:\\\\)*
\\
- 字面星号。替换为\*
,其中$1%
反向引用检索使用第1组捕获的文本。