给出以下测试字符串:
A simple paper
A simple, burnt paper
我希望匹配“简单”键(也可以是其他键)但不包含某些附加信息。例如,简单的纸张与简单的绿色纸张相同;两者都被认为是简单的论文,应该有匹配的密钥。
我有以下正则表达式:
A (?P<key>.+)(?:, green|) paper
问题是我似乎无法将“绿色”部分拆分出来。
附加输入以阐明密钥组需要空格:
A fairly complex paper
A fairly complex, green paper
这两项都应匹配key
仅fairly complex
的位置。
澄清排除组的其他输入:
A simple, torn paper
A simple, torn, green paper
这两项都应匹配key
simple, torn
的位置,因为, green
被指定为可选项,以便通过显式排除进行过滤。
(?:, green|)
我想说的是, green
可能会出现在这一点上,如果是,请将其捕捉到key
组之外,以免它出现那里。
密钥的可能字符包括:
[a-zA-Z,_\- ]
- 请注意包含空格[ ]
和逗号[,]
。
答案 0 :(得分:0)
您可以使用此正则表达式:(An?(?: [A-Za-z_-]+)*)(?:,[A-Za-z_ -]+)*( [A-Za-z_-]+)
要删除中间部分,而不是进行整个匹配,请将第1组和第2组连接在一起,即以您使用的任何语言将match[1] + match[2]
连接在一起。