是否有接受任何符号的正则表达式?
编辑:澄清我正在寻找的东西..我想构建一个正则表达式,它将接受任意数量的空格,并且必须包含至少1个符号(例如,“。$'等等)或(不是独家或)至少1个字符。答案 0 :(得分:7)
是。点(.
)将匹配任何符号,至少如果您将其与Pattern.DOTALL
标志一起使用(否则它将不匹配换行符)。来自文档:
在dotall模式下,表达式。匹配任何字符,包括行终止符。默认情况下,此表达式与行终止符不匹配。
关于你的编辑:
我想要构建一个正则表达式,它将接受任意数量的空格,并且必须包含至少1个符号(例如,“。$£等”)或(不是排他性的)至少1个字符。< /强>
这是一个建议:
\s*\S+
\s*
任意数量的空白字符\S+
一个或多个(“至少一个”)非空格字符。答案 1 :(得分:0)
在Java中,符号为\pS
,与标点字符\pP
不同。
我讨论了这个问题,并列举了所有ASCII标点符号和符号here in this answer的类型。
[\p{Alnum}\s]
等模式仅适用于20世纪60年代的遗留数据集。要使用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使得使用现代数据集变得如此困难,但至少它是可能的。
不要问边界或字形集群。为此,请参阅my others posting。