【问题标题】:writing regex in python [closed]在python中编写正则表达式[关闭]
【发布时间】:2012-05-23 09:29:45
【问题描述】:

我一直在尝试为此编写一个正则表达式,但到目前为止还没有成功。

_ any thing\_ fdfdf \_ any thing_

下划线,然后是 _ 之前的任何字符。

\_ 是一个转义字符,所以正则表达式必须接受这样的字符串。

_ any \_ thing _

以下字符串:

checking_ happens \_ ano\_ther _ test of bold _ and escape \_asteric

应该给:

_ happens \_ ano\_ther _

到目前为止,我只能想出这个:

(\\_)|_[^_]*[\\_]*[_]

【问题讨论】:

  • 您能否更清楚地了解输入和期望的输出?
  • 你能说得更具体点吗?您希望_任何_事物_返回任何_事物还是只返回任何
  • 您是否在使用 stackoverflow 降价时遇到问题?如果您将示例缩进 4 个空格,则降价不会触及下划线或反斜杠。
  • 谢谢@Eric 我遇到了 stackoverflow markdown 的问题。我现在在问题中添加了更多细节。

标签: python regex python-2.7


【解决方案1】:

这样就可以了:

(?<!\\)(?:\\\\)*_((?:[^_\\]|\\.)+)_

分手:

  • (?&lt;!\\)(?:\\\\)* - 匹配偶数个反斜杠,前面没有更多反斜杠
  • _ - 后跟一个下划线
  • ((?:[^_\\]|\\.)+) - 匹配以下 1 次或多次
    • [^_\\] - 除下划线或反斜杠以外的任何字符
    • \\. - 任何反斜杠/字符对(例如 \_\\
  • _ - 匹配尾随下划线

这将捕获第一组中下划线之间的字符串。

【讨论】:

  • 再次感谢@Eric。在开始使用 (?
  • (?:...)(...) 相同,但没有创建捕获组。另外,我一开始也没有忽略\\\\_ test _ 会失败。
  • @hajidon:好的,现在它适用于\\_ test_\\\\_ test_ 请注意,它也会匹配前导反斜杠...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2015-10-22
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多