我试图提取满足许多条件的令牌,其中,我使用lookahead实现以下两个条件:
'-','/','\','.','_'
等我想匹配如下字符串:165271
,agya678
,yah@123
,kj*12-
ajh12-&
我不想匹配如下字符串:ajh12-&
,671%&i^
我对第一个条件使用正向前瞻:(?=\w*\d\w*)
,对第二个条件使用负向前瞻:(?!=[\_\.\:\;\-\\\/\@\+]{2})
我不知道如何结合这两个前瞻性条件
任何建议都会有帮助。提前谢谢
编辑1:
我还想提取作为较大字符串的一部分的完整标记(即,它们可能出现在字符串的中间)
我想匹配字符串中的所有标记:
165271 agya678 yah@123 kj*12-
字符串中没有任何标记(甚至不是标记的一部分):ajh12-& 671%&i^
你可以用
Regex demo
负前瞻
(?=[^\d\n]*\d)
匹配除数字或换行符以外的任何字符。使用一个否定字符类,然后匹配一个数字请注意,您还必须添加
*
,并且大多数字符不必在character类中转义使用对比度,您还可以将第一个
.*
转换为一个否定字符类,以防止一些回溯编辑
如果没有锚,您可以在左侧
(?<!\S)
和右侧(?!\S)
使用空白边界Regex demo
您可以使用多个前瞻断言来仅捕获
(?!.*(?:\W|_){2,}.*)
-没有连续的特殊字符和(?=.*\d.*)
-至少有一个数字相关问题 更多 >
编程相关推荐