正则表达式:数字序列匹配

时间:2017-11-23 13:21:58

标签: regex

在Python中进行文本处理,尝试在输出中匹配<brackets>。内部可以包含任何字符,但如果有数字,如果有超过1个单位数字,则括号不匹配。例如......

< 1? >
<12>
<hot 198663 , ? ... @ key \n 6>

... 将匹配,而......

<0 0>
<9653, 8 test 6>
<18str 500 ing 4. 3 – 6>

... 应↑不

我尝试了类似<(?:\d{1}|\d{2,}|[^\d])>的内容,但实际上并没有这样做。

1 个答案:

答案 0 :(得分:2)

您可以使用<[^>]*>等一般模式,并使用(?!(?:[^>]*\b\d\b){2})否定前瞻限制它:

r'<(?!(?:[^>]*\b\d\b){2})[^>]*>'

请参阅regex demo

<强>详情

  • < - <
  • (?!(?:[^>]*\b\d\b){2}) - 如果以下序列中恰好出现2次紧接着与当前位置右侧匹配,则会导致匹配失败:
    • [^>]* - 除>
    • 以外的任何0 +字符
    • \b\d\b - 一个1位&#34;整个单词&#34;
  • [^>]* - 除>
  • 以外的任何0 +字符
  • > - >