Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Regex Group - Fatal编程技术网

Regex 如何防止将其他信息合并到此正则表达式中?

Regex 如何防止将其他信息合并到此正则表达式中?,regex,regex-group,Regex,Regex Group,给定以下测试字符串: A simple paper A simple, burnt paper 我希望匹配键“simple”(也可以是其他键),但不包括某些附加信息。例如,一张简单的纸和一张简单的绿皮书是一样的;两者都被认为是简单的文件,应该有一个匹配的密钥 我有以下正则表达式: A(?p.+)(?:,绿色|)纸 问题是,我似乎无法将“绿色”部分划分为可忽略的部分 一个额外的输入,以澄清密钥组需要空白: A fairly complex paper A fairly complex, gree

给定以下测试字符串:

A simple paper
A simple, burnt paper
我希望匹配键“simple”(也可以是其他键),但不包括某些附加信息。例如,一张简单的纸和一张简单的绿皮书是一样的;两者都被认为是简单的文件,应该有一个匹配的密钥

我有以下正则表达式:

A(?p.+)(?:,绿色|)纸

问题是,我似乎无法将“绿色”部分划分为可忽略的部分

一个额外的输入,以澄清密钥组需要空白:

A fairly complex paper
A fairly complex, green paper
相当复杂时,这两项都应该匹配

澄清排除组的额外输入:

A simple, torn paper
A simple, torn, green paper
简单的、破损的
时,这两个键都应该匹配,因为
、绿色
被指定为可选,以便通过显式排除进行过滤

我想说的是,
(?:,绿色|)
此时可能会出现
,绿色
,如果是,则在
组之外捕获它,使它不会出现在那里

键的可能字符包括:

[a-zA-Z,\-]
--注意包含空格
[]
和逗号
[,]

您可以使用以下正则表达式:


要删除中间部分,而不是整个匹配,请选择组1和组2并将它们连接在一起,即使用您所使用的任何语言进行
match[1]+match[2]

可能您需要?您已更改了
?p
的正则表达式,以排除带有
\S
的空白字符。这与已知的可能键不兼容,这些键包括字符
[a-zA-Z,\-]
。很好,那么,。您再次从键组中排除了某些匹配所必需的空白。我添加了一些额外的输入来澄清。不,我没有排除任何东西,我只是以一种你可以正确匹配项目的方式安排字符。如果项目之间的空格是可选的,您可以使用
*
量词。如果不花点力气定义要匹配的模式,就无法解决问题。目前,无法解决此问题,因为您没有提供足够的详细信息。添加了更多说明,说明我如何尝试应用组,以便从
组中排除尾随字符串。请注意,密钥组可能包含逗号,这就是我显式指定排除的原因。一旦我对您的正则表达式重新应用逗号,它就无法匹配与初始正则表达式相同的输入:
(An?(?:[a-Za-z,-]+)*)(?:,green,|,pretty)*paper
(为清晰起见,对正则表达式进行了简化)。