Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何用正则表达式替换字符串中重复字符的实例?_Regex - Fatal编程技术网

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

Regex 如何用正则表达式替换字符串中重复字符的实例?,regex,Regex,我需要特别突出显示字符a,但仅当它们位于双引号内时,“ 例如,给定这个字符串:“a”。我应该找到a。给定这个字符串“blah”,我还应该找到a。应该找到以下内容:“我是一个好孩子。”,“我是一个阿瓦克人”,“1224a”。我只想突出显示a,如果可能的话,不想再突出显示其他内容 我尝试使用此正则表达式检测字符串中的字符: (?此regexp与两个或多个“a”连续符匹配:aa+ 更正。这是完整的正则表达式:“.*aa+.*” 更新 您可以使用perl或linuxshell命令 例如,使用awk l

我需要特别突出显示字符
a
,但仅当它们位于双引号内时,

例如,给定这个字符串:
“a”
。我应该找到
a
。给定这个字符串
“blah”
,我还应该找到
a
。应该找到以下内容:
“我是一个好孩子。”
“我是一个阿瓦克人”
“1224a”
。我只想突出显示
a
,如果可能的话,不想再突出显示其他内容

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


(?此regexp与两个或多个“a”连续符匹配:aa+
更正。这是完整的正则表达式:“.*aa+.*”

更新
您可以使用perl或linuxshell命令

例如,使用awk linux shell命令:

a) 在引用字符串中将两个或多个“a”的组更改为“x”:
awk'/'*aa+.*/{gsub(/aa+/,“x”)};{print}'in.txt>out.txt

b) 在cuoting字符串中,将简单“a”的所有匹配项更改为“x”:
awk'/“*a.*/{gsub(/a/,“x”)};{print}'in.txt>out.txt

  • .txt内容中的源文件:
    霍拉
    乌纳之家酒店 德维拉亚诺
    “la cacaa vaaa de”
    卡拉可乐
    “aa”
    “可可”
  • 生成out.txt文件。案例a):
霍拉
乌纳之家酒店 德维拉亚诺
“la cacx vx de”
卡拉可乐
“x”
“可可”

  • 生成out.txt文件。案例b):
霍拉
乌纳之家酒店 德维拉亚诺
“lx-Cxx-Vxx-de”
卡拉可乐
“xx”

“coco”

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

^([^"]*("[^"a]*"[^"]*)*"[^"a]*)a+
第一个捕获组在记事本++中使用
\1x
方便地替换。请注意,这将用单个
X
替换
a
序列。如果需要逐个字符替换,请在正则表达式中删除尾随的
+

正则表达式锚定在文本的开头,跳过不包含
a
的不带引号的文本和带引号的材料序列。包含在匹配双引号中的文本部分不得包含转义双引号(例如,
bla-bla“bla\”bla“

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


编程解决方案的一个出路是允许锚定上一个匹配的正则表达式变体(参见此).

您是否试图识别具有重复字符的字符串,在匹配字符串中突出显示这些字符,或者两者都突出显示?如果只是ascii字母,最好使用每个字母在循环中查找并记录哈希/数组类型中的子字符串位置。这是在记事本++中尝试查找并使用正则表达式。您的意图是什么?您可以通过简单的
“*?(a+).*?”
搜索轻松识别
a
组。@zwer,它高亮显示所有包含
a
的字符串。我需要特别高亮显示字符
a
的实例,但仅当它们位于双引号内时,
。这只适用于“a”或“aa”。不是”我是一个aadvark”。我需要所有a,无论它们是独立的还是在一个句子中。例如,第2行和第3行中的匹配。bellow.hola 1.una casa 2.de veraaano 3.la cacaa vaaa de 4.Caracola,以及包含任何重复“a”组的所有行的匹配:.*aa+.*完成“字符:“.*aa+.*”