【问题标题】:Is it possible to match a string and closest brackets? [duplicate]是否可以匹配字符串和最接近的括号? [复制]
【发布时间】:2019-08-21 08:27:11
【问题描述】:

我正在分析一些引用模式,并为每个句子提供通常看起来像这样的字符串

Various chemogenomics [<xref ref-type="bibr" rid="pone.0204999.ref008">8</xref>] methods have been proposed in the last decade [<xref ref-type="bibr" rid="pone.0204999.ref010">10</xref>–<xref ref-type="bibr" rid="pone.0204999.ref024">24</xref>] and also this one [<xref ref-type="bibr" rid="pone.0204999.ref008">8</xref>].

在尝试查找句子中的所有引文时,我的匹配项看起来像

>10<\/xref>–<xref ref-type="bibr" rid="pone.0204999.ref024">24<\/xref>

理想情况下,我可以用方括号识别(并替换)完整引用,即字符串

[<xref ref-type="bibr" rid="pone.0204999.ref010">10</xref>–<xref ref-type="bibr" rid="pone.0204999.ref024">24</xref>]

只知道我匹配的字符串。我想知道是否可以获取匹配字符串并将所有文本包含到最近的方括号中?

我可以在匹配字符串后使用惰性.*?] 正则表达式匹配右方括号,但不能对左方括号执行相同操作,因为它会找到句子的第一个左方括号,而不是比最接近匹配字符串的那个。

【问题讨论】:

  • 由于 XML (&lt;xref.../&gt;) 的东西在这里并不真正相关,我建议将问题归结为仅包含实际问题的最小工作示例(即匹配正方形内的文本括号)。顺便说一句:您需要使用 \] 而不是仅使用 ] 来匹配字符“]”来转义正则表达式中的方括号。

标签: python regex


【解决方案1】:

我想知道是否可以获取匹配字符串并将所有文本包含到最近的方括号?

是的,例如通过从匹配中排除左方括号,如下所示:

\[[^\[]*?\]

查看regex101上的最小示例

【讨论】:

  • 非常感谢您的回复,同意这将找到句子中的所有引用,如您的示例所示(谢谢),但如果我只想专门找到有问题的匹配项,即那个用方括号中的&gt;10&lt;\/xref&gt;–&lt;xref ref-type="bibr" rid="pone.0204999.ref024"&gt;24&lt;\/xref&gt; 可以这样做吗?
猜你喜欢
  • 2017-03-29
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多