字符 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 字母
(?=>)
- 正向前瞻,需要立即在右侧的 >
字符。
我想匹配包含重复的某些字符的字符串部分,以及仅在给定特定条件的情况下匹配的某些其他字符。例如匹配包含在尖括号和数字中的字符 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 字母(?=>)
- 正向前瞻,需要立即在右侧的>
字符。