如何用正则表达式替换字符串中重复字符的实例?

时间:2017-06-15 01:09:33

标签: regex

我需要专门突出显示字符a的实例,但前提是它们在双引号内""

例如,给定此字符串:"a"。我应该找到a。给定此字符串"blah",我还应该找到a。应该找到以下内容:"I am a good boy.""I am an aavark""1224a"。我只想突出显示a,如果可能的话,没有别的。

我尝试使用此正则表达式来检测字符串中的字符:

(?<=")([a])(?="),但这只匹配a的单个实例。我也尝试将a*放在中间()中,但它没有像我期望的那样工作。

这是在记事本++中尝试查找和使用正则表达式。我有很多JS文件,我想找到所有使用特定字符的字符串。无论多少重复,只要它们在""之间。

2 个答案:

答案 0 :(得分:0)

这个正则表达式匹配两个或更多的女巫&#34; a&#34;连续:aa + 更正。这是完整的正则表达式:&#34;。* aa +。*&#34;
..

UPDATE
您可以使用perl或linux shell命令。

例如使用awk linux shell命令:

a)更改两个或更多组&#34; a&#34;用&#34; x&#34;引用字符串:
awk '/".*aa+.*"/ {gsub(/aa+/, "x")}; {print} ' in.txt > out.txt

b)更改简单&#34; a&#34;的所有匹配。用&#34; x&#34;,用cuoting字符串:
awk '/".*a.*"/ {gsub(/a/, "x")}; {print} ' in.txt > out.txt

  • 源文件in.txt内容:
    HOLA
    una casa
    de veraaano
    &#34; la cacaa vaaa de&#34;

    拉卡拉勾 &#34; AA&#34;
    &#34;椰油&#34;
  • 结果是out.txt文件。案例a):

HOLA
una casa
de veraaano
&#34; la cacx vx de&#34;

拉卡拉勾 &#34; X&#34;
&#34;椰油&#34;

  • 结果是out.txt文件。案例b):

HOLA
una casa
de veraaano
&#34; lx cxcxx vxxx de&#34;

拉卡拉勾 &#34; XX&#34;
&#34;椰油&#34;

答案 1 :(得分:0)

以下正则表达式的重复应用符合要求:

^([^"]*("[^"a]*"[^"]*)*"[^"a]*)a+

第一个捕获组存在,便于使用\1x在Notepad ++中替换。请注意,这会将a的序列替换为单个X。如果需要逐个字符替换,请在正则表达式中删除尾随+

正则表达式锚定在文本的开头,并跳过未加引号的文本和不包含a的引用材料的序列。用匹配的双引号括起来的文本部分不得包含转义双引号(例如bla bla "bla \"bla")。

可能没有本地解决方案,因为它既不包含要匹配的a序列的完整前缀的子模式,也不需要在正则表达式托管环境中进行额外的簿记/处理 - 需要检查匹配网站上的双引号数是否均匀。

一种出路和朝向程序化解决方案的方法是允许锚定前一个匹配的正则表达式变体(请参阅此list of supporting environments)。