是否有接受任何符号的正则表达式?
编辑:澄清我在寻找什么..我想构建一个正则表达式,它将接受任意数量的空格,并且它必须包含至少 1 个符号(例如,." ' $ £ 等)或(非排他或)至少 1 个字符。
是否有接受任何符号的正则表达式?
编辑:澄清我在寻找什么..我想构建一个正则表达式,它将接受任意数量的空格,并且它必须包含至少 1 个符号(例如,." ' $ £ 等)或(非排他或)至少 1 个字符。
是的。点 ( .
) 将匹配任何符号,至少如果您将它与Pattern.DOTALL
标志一起使用(否则它将不匹配换行符)。从文档:
在 dotall 模式下,表达式 . 匹配任何字符,包括行终止符。默认情况下,此表达式不匹配行终止符。
关于您的编辑:
我想构建一个正则表达式,它将接受任意数量的空格,并且它必须包含至少 1 个符号(例如,." ' $ £ 等)或(非排他或)至少 1 个字符。
这是一个建议:
\s*\S+
\s*
任意数量的空白字符\S+
一个或多个(“至少一个”)非空白字符。在 Java 中,符号是\pS
,它与标点符号不同,后者是\pP
.
我在这个答案中谈到了这个问题,并列举了所有 ASCII 标点符号和符号的类型。
诸如此类的模式[\p{Alnum}\s]
仅适用于 1960 年代的遗留数据集。要使用 Java 本机字符集进行处理,您需要一些类似的东西
identifier_charclass = "[\\pL\\pM\\p{Nd}\\p{Nl}\\p{Pc}[\\p{InEnclosedAlphanumerics}&&\\p{So}]]";
whitespace_charclass = "[\\u000A\\u000B\\u000C\\u000D\\u0020\\u0085\\u00A0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]";
ident_or_white = "[" + identifier_charclass + whitespace_charclass + "]";
很抱歉,Java 让使用现代数据集变得如此困难,但至少这是可能的。
只是不要询问边界或字素簇。为此,请参阅我的其他人发帖。