【发布时间】:2017-01-04 05:32:33
【问题描述】:
我收到了两个示例输入字符串:
“在德国入侵后,俄罗斯在 [A] [B] 中加入了二战”
“德国入侵后,俄罗斯于 1941 年 9 月加入二战”
在第一个字符串的 [A] 和 [B] 之前、之后和之间可以有任何字符,并且可以有额外的占位符,例如[C] [D] 等每个占位符只能出现一次。
如何使用正则表达式匹配“September”和“1941”?
我需要在单个正则表达式中匹配每个占位符,而不是多个步骤。
我对解决方案的想法
我猜解决方案是这样的:
'在字符串 1 中 [A] 之前的所有内容之后和字符串 1 中 [A] 之后的所有内容之前匹配字符串 2 中的所有内容。
我想出(.*(:?\[A\])) 和((:?\[A\]).*) 来获取第一个字符串中 [A] 之前和之后的文本,但不知道如何使用它来查看第二个字符串。也许我需要用某种分隔符连接这两件事并查看分隔符的任一侧?
【问题讨论】:
-
你可以和
(?:\s*\[[^\]]*])+分开 -
用
\S+替换占位符,并在正则表达式的开头和结尾分别添加^和$锚。 -
@revo 谢谢,但我不关注。可以举个例子吗?
标签: regex