我有这个正则表达式
\.*?\{\{([\w\s]+)\|([\w\s]+)\}\}
并且它正确地捕获了这个词:
{{58afc8ed3688d3001cb8b043_1487915885599|data}}
但如果我说出这样的话
{{58afc8ed3688d3001cb8b043_1487915885599|data?}}
它无法捕获它。
我怎么能抓住后来的?
答案 0 :(得分:2)
你的两个例子之间的唯一区别是你有一个额外的'?'第二组(或之后)中的角色。
siam的回答是正确的,但会导致非常广泛的匹配,这可能不是您想要的。毕竟,在极端情况下,如果您愿意,可以用\{\{(.*)\|(.*)\}\}
替换整个正则表达式。
假设它只是一个你关注的问号,你可以:
([\w\s]+)
延伸至([\w\s?]+)
([\w\s]+)
替换为([\w\s]+\?*)
(将会{。}}
允许零个或任意数量的尾随问号)([\w\s]+)\?*
当然,如果你的意思是接受除了问号之外的特殊字符,你可以简单地以相同的方式添加它们。