Regex返回x之后和y之前的特定字符串匹配
正在寻找用于搜索替换的PowerGrep/VS代码中的正则表达式已解决 具有所需匹配的样本输入(Regex返回x之后和y之前的特定字符串匹配,regex,Regex,正在寻找用于搜索替换的PowerGrep/VS代码中的正则表达式已解决 具有所需匹配的样本输入(显示为code) 此处的任意字符串type=Multi此处的任意字符串end\u type\u a下线之前的任意字符串 此处的任意字符串类型=此处的多个任意字符串结束\u类型\u b下线之前的任意字符串 此处的任意字符串类型=此处的多个任意字符串结束\u类型\u c下线之前的任意字符串 此处的任意字符串type=Multi此处的任意字符串end\u type\u a下线之前的任意字符串 此处的任意字符
显示为code
)
此处的任意字符串type=Multi
此处的任意字符串end\u type\u a下线之前的任意字符串此处的任意字符串类型=此处的多个任意字符串结束\u类型\u b下线之前的任意字符串
此处的任意字符串类型=此处的多个任意字符串结束\u类型\u c下线之前的任意字符串
此处的任意字符串
type=Multi
此处的任意字符串end\u type\u a下线之前的任意字符串此处的任意字符串类型=此处的多个任意字符串结束\u类型\u c下线之前的任意字符串 我试图用single替换单词multi,如果它在同一行上后跟end\u type\u a 下面的一些答案(例如,
/type=Multi(.*?end\u type\u a.*)/
在匹配中产生了多个组,这些组不是由我的文本编辑器处理的,也不会给出所需的结果
卡里的建议(?:\A | ^(?=.*\z))type=Multi
让我走上了正确的道路
这适用于我的用例:(?:\A |(?=.*end_type_A))type=Multi
为您的帮助干杯如果您尝试捕获第一个组直至正向前瞻断言(?=…),您应该只能替换您需要的字符串:
^type=Multi(any.+)(?=end_type_a)
只有当它存在于字符串中时,才会捕获到“EnthIytType A”,只在字符串之前捕获字符串,而不包括“类型=多”,然后可以替换它。
re.subn(r'^type=Multi(any.+)(?=end_type_a)', r'type=Single\1', str, flags=re.MULTILINE)
希望这有帮助!不确定你在哪种语言中,但这可能会有所帮助
/type=Multi(.*?end_type_a.*)/
那么在js中可以做:
'type=Multiany string here end_type_a any string here before EOL'.replace(
/type=Multi(.*?end_type_a.*)/g,
'type=Single$1'
);
结果:
"type=Singleany string here end_type_a any string here before EOL"
欢迎使用Stack Overflow。您已经尝试了哪些方法?请查看您需要提供的信息。在您自己尝试了这些方法之后,如果仍然存在问题,您可以使用特定问题的详细信息和您尝试过的方法更新您的问题,并将相关代码包含在a中,因此we可以提供帮助。请看一看您可能想要
(?:\a | ^(?=.*\z))type=Multi
。将光标移到链接处的正则表达式上,以查看有关单个正则表达式令牌的详细信息。谢谢Cary。.这让我走上了正确的道路。.以结束(?:\a |(?=.*end\u type\u a))type=Multi
干杯。我明白这是怎么回事了。我正在尝试使用文本编辑器(VSCode)进行搜索和替换,但它选择了“end_type_a”之前的整个匹配项。有什么办法吗?我不知道VSCode,但如果它有PCRE兼容的匹配项,它应该只匹配“Multi”的结尾和“end”的开头。你也可以尝试“^type=Multi”(?=end_type_a)”并替换为“type=Single”(如果有帮助的话):)谢谢。这似乎给了我与其他注释相同的结果。它匹配从“type…”到“…type_a”的整个字符串。如果后面跟有“end_type_a”,我尝试将“multi”替换为“Single”在同一行。只是使用一个文本编辑器。尝试PowerGrep,但到目前为止结果相同。也许我必须学习一些JS/Python:)?