当我要匹配除5以外的所有数字字符时,我使用:
[^\D|5]
要么
[^\D5]
要么
[0-46-9]
要么
[012346789]
当我不想匹配任何数字字符时,可以使用:
[^\d]
要么
[\D]
他们都工作良好。但是,当我使用
[^^\d5]
或[^^\d|5]
匹配除5以外的所有数字字符时,它将不起作用。我想在很多情况下使用它。例如,我要匹配所有
\p{P}
,但不匹配。有什么方法可以使用\:
匹配除5以外的所有数字字符? 最佳答案
您可以使用以下方式匹配除5以外的所有数字:
[123467890]
没有理由使用所有内容的简写形式。
它对正则表达式引擎没有影响。
实际上,添加alternation
|
和零长度断言^
只会降低性能。较短的版本是:
[0-46-9]
字符类
[]
中的连字符/破折号行为连字符将在字符类中指定一个范围。您可以查找ASCII表以查看正在执行的范围,例如:
[ -Z]
实际上匹配ASCII 33至127。编辑:
好的,现在我对您的要求有了更好的了解。
您需要具体说明需要预先匹配的内容。
您可以使用负/正前瞻来做到这一点:
(?!.*?5.*?)(?!.*?\p{Alpha}.*?)(\p{P}*?$|\p{L}*?$)
在以下条件下将匹配:
没有数字5
POSIX类中没有字符:Alpha
具有Unicode属性“字母”或“标点”的任何字符