用于在环视表达式中查找所有出现的单词的正则表达式
Regular Expression to find all occurrences of a word within a lookaround expression
我需要在任何 html 页面的任何 class 声明中找到所有出现的 "st",例如:
class="st0 st1 st2", class="st3 st45", class="st678"
我在 class 声明中说是因为整个文档中可能还有其他 "st" 的出现,我不想每次都更改。
我的最终目标是查找和替换。我已经为此编写了逻辑,但我只需要弄清楚如何从字符串中分离出 "st"。
我尝试了一些不同的环视表达式,但我似乎无法匹配每一个出现的地方。以下是我一直在尝试的一些示例。
此表达式获取 'class="' 和 '"' 之间的所有内容:
正则表达式:
(?<=class=").*(?=")
测试刺:
class="st10 st11"
匹配结果:
"st10 st11"
这是我试过的另一个:
正则表达式:
(?<=class=")((st)\d*\s*)*(?=")
测试刺:
class="st10 st11"
匹配结果:
"st10 st11"
匹配组:
- st11
- st
我一直在 Rubular.com
测试我的正则表达式
从评论中添加
我将在终端 shell 命令中使用正则表达式,我将在特定文件夹上 运行。 shell 命令将查找并替换文件夹中的每个文件,如下所示...
perl -pi -w -e 's/st/stx/g;' ~/Desktop/svg_find_replace/*.svg.
如有任何帮助,我们将不胜感激。
您可以使用基于 \G
to chain matches 的正则表达式。
(?:class="|\G(?!^))(?:(?!st)[^"])*\Kst
(?:
打开一个non capturing group进行交替。
(?:class="|\G(?!^))
第一部分是设置比赛开始的地方。 \G
也将匹配字符串的开头。为防止这种情况,使用负值 lookahead (?!^)
。
(?:(?!st)[^"])*
这部分是为了匹配任意数量的 not "
的字符,并防止通过使用否定前瞻 (?!st)
来跳过 st
]
\K
resets 报告匹配的开始。
Here is the demo at regex101. It is probably a rather advanced pattern. SO has a nice regex faq.
我需要在任何 html 页面的任何 class 声明中找到所有出现的 "st",例如:
class="st0 st1 st2", class="st3 st45", class="st678"
我在 class 声明中说是因为整个文档中可能还有其他 "st" 的出现,我不想每次都更改。
我的最终目标是查找和替换。我已经为此编写了逻辑,但我只需要弄清楚如何从字符串中分离出 "st"。
我尝试了一些不同的环视表达式,但我似乎无法匹配每一个出现的地方。以下是我一直在尝试的一些示例。
此表达式获取 'class="' 和 '"' 之间的所有内容:
正则表达式:
(?<=class=").*(?=")
测试刺:
class="st10 st11"
匹配结果:
"st10 st11"
这是我试过的另一个:
正则表达式:
(?<=class=")((st)\d*\s*)*(?=")
测试刺:
class="st10 st11"
匹配结果:
"st10 st11"
匹配组:
- st11
- st
我一直在 Rubular.com
测试我的正则表达式从评论中添加
我将在终端 shell 命令中使用正则表达式,我将在特定文件夹上 运行。 shell 命令将查找并替换文件夹中的每个文件,如下所示...
perl -pi -w -e 's/st/stx/g;' ~/Desktop/svg_find_replace/*.svg.
如有任何帮助,我们将不胜感激。
您可以使用基于 \G
to chain matches 的正则表达式。
(?:class="|\G(?!^))(?:(?!st)[^"])*\Kst
(?:
打开一个non capturing group进行交替。(?:class="|\G(?!^))
第一部分是设置比赛开始的地方。\G
也将匹配字符串的开头。为防止这种情况,使用负值 lookahead(?!^)
。(?:(?!st)[^"])*
这部分是为了匹配任意数量的 not"
的字符,并防止通过使用否定前瞻(?!st)
来跳过st
]\K
resets 报告匹配的开始。
Here is the demo at regex101. It is probably a rather advanced pattern. SO has a nice regex faq.