【问题标题】:Pattern matching with minimum length?最小长度的模式匹配?
【发布时间】:2019-05-01 01:20:04
【问题描述】:

正则表达式初学者。

import re
rx = r"\(.*?\)/DATE"
s = 'THE (HIGH COURT OF HIMACHAL PRADESH)/ORG, (SHIMLA)/PLACE (Criminal\nAppeal No. 235 of 2006)/CASE Judgment Reserved on : (27. 04. 2016)/DATE\nDate of Decision : (June 2, 2016)/DATE")'
print(re.findall(rx, s))

Now the output is 
['(HIGH COURT OF HIMACHAL PRADESH)/ORG, (SHIMLA)/PLACE (Criminal\nAppeal No. 235 of 2006)/CASE', '(27. 04. 2016)/DATE\nDate of Decision : (Criminal\nAppeal No. 235 of 2006)/CASE]

我只想要 reduce 字符串而不是从一开始就匹配的字符串。

What the output I want?
[(Criminal\nAppeal No. 235 of 2006)/CASE,(Criminal\nAppeal No. 235 of 2006)/CASE]

https://ideone.com/rSRENU

【问题讨论】:

  • 我似乎无法重新创建原始输出。我收到“['(27. 04. 2016)/DATE', '(2016 年 6 月 2 日)/DATE']”。

标签: regex python-3.x


【解决方案1】:

您的代码似乎是正确的,也许您应该检查一下是否有错别字。

另一种方法是匹配非括号字符 [^()]* 而不是任何字符 .*,如以下正则表达式:\([^()]*\)/DATE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 2023-02-01
    • 1970-01-01
    • 2017-07-15
    • 2015-09-19
    • 2017-12-28
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多