【问题标题】:Python regex to match word before <Python正则表达式匹配<之前的单词
【发布时间】:2014-03-14 06:13:33
【问题描述】:

所以我想匹配这样的东西-

foo <TEST>something something </TEST> blah

我想要一个正则表达式,它可以让我得到 foo,但不能让我得到一些东西。我正在考虑使用类似这样的正则表达式

(\w\s)<

带有负前瞻,但我不确定在这种情况下如何使用它。

其他情况-

something something foo <TEST> something something </TEST> blah 

【问题讨论】:

  • 你能举出更多例子吗?注意:如果是 HTML 或 XML,则不适合使用正则表达式。
  • 第一个东西不在 &lt; 之前 - 你也想匹配那个吗?
  • @Claudiu 再次阅读:他不想匹配something,只匹配foo
  • 是的 - 我会添加更多示例,不,我不匹配 HTML
  • @praks5432 还有预期的输出。

标签: python regex


【解决方案1】:

你可以试试这样的:

\w+(?=\s*<[^/])

regex101 demo

正向前瞻(?=\s*&lt;[^/]) 确保有可选空格后跟&lt;,而/ 后面没有前面。

\w+     matches one or more \w
(?=     beginning of positive lookahead
  \s*   optional spaces
  <     a < character
  [^/]  not a / character
)       end of positive lookahead

【讨论】:

  • 很好的答案!我开始掌握正则表达式的窍门,这样的即时响应很有帮助。
【解决方案2】:

负前瞻就可以了。

(\S+)\s*<(?!/)

【讨论】:

    【解决方案3】:

    添加我自己的版本

    ^(?P<Word>\S*\W)*<
    

    在行动中看到它http://regex101.com/r/tS6hM2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      相关资源
      最近更新 更多