字符 class 的正则表达式匹配和某些其他条件下的特殊条件

Regex matching of character class and special conditions on certain other conditions

我想匹配包含重复的某些字符的字符串部分,以及仅在给定特定条件的情况下匹配的某些其他字符。例如匹配包含在尖括号和数字中的字符 a-z 仅当数字前面有加号时。

匹配 <abcde>abcde

<abcde1> 不应匹配任何内容。

匹配 <abcde+1>abcde+1 匹配 <abcde+1asd+2+3+4as>abcde+1asd+2+3+4as

<abcde+> 不应匹配任何内容。

我试过的正则表达式是 <([a-z]|(\+(?=[0-9])|[0-9](?<=[\+])))*>.

您可以使用

(?<=<)(?:[a-zA-Z]+(?:\+\d+)*)+[a-zA-Z]*(?=>)
<((?:[a-zA-Z]+(?:\+\d+)*)+[a-zA-Z]*)>

regex demo详情:

  • (?<=<) - 正后视需要紧靠左侧的 < 字符
  • (?:[a-zA-Z]+(?:\+\d+)*)+ - 出现一次或多次
    • [a-zA-Z]+ - 一个或多个字母
    • (?:\+\d+)* - 零个或多个 + 序列和一个或多个数字
  • [a-zA-Z]* - 一个或多个 ASCII 字母
  • (?=>) - 正向前瞻,需要立即在右侧的 > 字符。