我想删除两个符号<
和>
之间的字母和数字以外的字符,字符串为<F=*A*B*C*>
(?<=F=|\G(?!^))[A-Za-z1-9]*\K[^A-Za-z1-9]+
//output:<F=ABC
(?:^<F=(?=.+>$)|\G(?!^))[A-Za-z1-9]*\K[^A-Za-z1-9]+
//output:<F=ABC
这个正则表达式模式也捕获了最后一个结束标记并将其删除(<F=ABC
)。如何使它停止在特定的符号处并避免捕获最后一个结束标记。
当我在[^A-Za-z1-9]
中添加>
时,它可以正确地移除>
符号以外的字符。
(?<=F=|\G(?!^))[A-Za-z1-9]*\K[^A-Za-z1-9>]+
//output: <F=ABC>// desired result
从这个符号开始定义停止匹配的正确方法是什么?谢谢。
1条答案
按热度按时间w46czmvw1#
您可以使用
请参见regex demo。
(?:\G(?!^)|<F=)
-上一个匹配的结尾或<F=
文本[^<>]*?
-除<
和>
之外的任何零个或多个字符,尽可能少\K
- match reset运算符,用于从整个匹配内存缓冲区中丢弃目前匹配的文本[^A-Za-z0-9<>]+
-ASCII字母/数字以及<
和>
字符以外的一个或多个字符(?=[^<>]*>)
-紧挨着右侧,除了<
和>
以及>
字符之外,必须有零个或多个字符。