匹配空格或标点符号和非字母数字字符的正则表达式

4
我有这个正则表达式:
(\s+)|([.,!?:;'\"\'-])
它匹配数组中的任何空格或标点符号,但不是所有标点符号,我很难找到一个示例可以匹配所有标点符号。
我考虑过匹配非字母数字字符,但这会导致重音字母和不同的词汇表问题。
是否有包括所有标点符号(当我说标点符号时,我希望包括符号)的全面匹配方式?
例如:`,.#@等。

1
这是一份全面的指南。只需遵循它,您就可以自己构建它:p https://itnext.io/regular-expressions-tricks-you-should-know-2976c7bd1be3 - Daan
只需在字符类中添加其他字符即可。 - Michał Turczyn
1
请参阅以下内容:支持的Unicode通用类别和下面的支持命名块。 - Alexander Petrov
1
您可能需要先进行文本规范化。请参阅String.Normalize方法。还请参阅Unicode等价性规范化FAQ - Alexander Petrov
2个回答

6
您可以使用 [\p{P}\p{S}]
(\s+)|([\p{P}\p{S}])

[\p{P}\p{S}] 会匹配任何标点符号或符号字符。

请参见这些类别所指的子属性列表

标点符号
Pc  连接符标点符号      包括“_”下划线
Pd  破折号标点符号      包括几种连字符字符
Ps  开放式标点符号      开始括号字符
Pe  关闭式标点符号      结束括号字符
Pi  初始引号标点符号    开始引号。 不包括ASCII“中性”引号。 取决于用法,可能像Ps或Pe一样行为
Pf  最终引号标点符号    结束引号。 取决于用法,可能像Ps或Pe一样行为
Po  其他标点符号

符号
Sm  数学符号        数学符号(如+, - ,=,×,÷,√,∊)。 不包括在类别Ps和Pe中的括号和方括号。 也不包括!,*,-或/,尽管经常用作数学运算符,但主要被视为“标点符号”。
Sc  货币符号        货币符号
Sk  修改符号    
So  其他符号

2
如果不需要匹配下划线,你可以使用
\W
代替你当前使用的内容,它将匹配任何不是数字、字母或下划线的字符。

这不起作用是因为有重音字符/不同的词汇表,例如é - user6911980
我在将此发送给您之前在正则表达式工具中尝试了一下,那个字符没有被检测到,您想要它被检测到吗? - nalnpir
这是我正在使用的,且符合 regexr - user6911980

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接