![](/img/trans.png)
[英]Regex match (\w+) to capture single words delimited by ||| - Python
[英]Regex - capture words after match
我有一个字符串,我试图匹配单词模式,这些单词模式直接出现在标签之后,也可能出现在标签之后的一个单词。 例如:
after_tag = r'here is sentence as an example where a [TAG] ~~M001~~ a word'
one_after_tag = r'here is sentence as an example where a [TAG] can ~~M001~~ a word'
我也想将其扩展为与连接词一起使用,这里也已被标记。 这也应该在[CONNECT]标记后的一两个字的窗口内工作,例如:
after_connect = r'here is a sentence where a [TAG] could [CONNECT] ~~M002~~'
one_after_connect = r'here is a sentence where a [TAG] could [CONNECT] a ~~M002~~'
我在Python中使用re包尝试了以下正则表达式。
regex_current = re.compile(((?:(?<=(\{TAG})))(.*?)\~\~[A-Z0-9]{4,5}\~\~))
任何人都可以帮忙吗? 我发现以下网站对测试很有帮助。
这是同时匹配~~...~~
单词的一种解决方案:
(?<=\[TAG\])( \w*)? ~~\w*~~
[TAG]
。 ~
~
字。 如果它们之间也有一个单词也将被匹配,那么您可以将第二个单词分组或拆分结果并使用最后一个索引。
这是例子 。
同样包含CONNECT
例子or
相同的东西:
(?<=\[TAG\])( \w*)? ~~\w*~~|(?<=\[CONNECT\])( \w*)? ~~\w*~~
正则表达式精确无误,但后向搜索需要恒定的宽度。 如果您不介意匹配TAG,可以将其缩短为:
\[(TAG|CONNECT)\]( \w*)? ~~\w*~~
只有在您希望有更多~~LettersAndDigits~~
单词的情况下,才需~~LettersAndDigits~~
。 如果没有,您可以精确搜索
~~\w*~~
没有任何幻想。
最后加法
两个确保TAG
和CONNECT
出现(可选CONNECT):
\[TAG\]( \w*)?( \[CONNECT\]( \w*)?)? ~~[\w]*~~
这是小提琴 。 在这种情况下,仅要获取单词,我将明确使用grouping ()
,因为匹配长度是可变的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.