用正则表达式替换指定的char,该正则表达式匹配字符串中的字符数组

时间:2016-09-12 13:26:58

标签: regex wildcard asterisk

所以我有正则表达式,只找到偶数个转义字符和星号:(\\\\)+([*])。问题是它没有选择第一个星号并且它选择所有行(我需要正则表达式会尝试"计算"连续行中的所有转义字符,选择具有偶数转义数的行并将星号替换为百分之字符。

为了清楚起见,我将添加一张照片,显示我正在尝试实现的任务。 https://postimg.org/image/b51v5qhkz/

1 个答案:

答案 0 :(得分:1)

我建议使用^在匹配字符串开头处锚定匹配项,然后匹配\以外的任何符号,然后匹配零个或多个double \序列,捕获所有这些进入一个小组,直到星号。

^([^\\]*(?:\\\\)*)\*

请参阅regex demo(请注意,演示中的\n是为了演示而添加的,因为输入是多行字符串。如果要处理单独的字符串,则不需要{在\n)内{1}}。

击穿

  • [^\\] - 字符串开头
  • ^ - 第1组捕获
    • ([^\\]*(?:\\\\)*) - 除[^\\]*
    • 以外的0个字符
    • \ - 0 + (?:\\\\)*
    • 的序列
  • \\ - 字面星号。

替换为\*,其中$1%反向引用检索使用第1组捕获的文本。