Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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返回x之后和y之前的特定字符串匹配_Regex - Fatal编程技术网

Regex返回x之后和y之前的特定字符串匹配

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下线之前的任意字符串 此处的任意字符

正在寻找用于搜索替换的PowerGrep/VS代码中的正则表达式已解决

具有所需匹配的样本输入(
显示为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:)?