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
(为清晰起见,对正则表达式进行了简化)。