首页 > 解决方案 > RegEx:匹配任何非空字符串,包括换行符

问题描述

我想完全匹配任何非空的多行字符串。在 PHP-Flavour 中,我会使用\X令牌来匹配任何字符,包括换行符。不幸的是,我需要使用\X令牌不起作用的 Java。

我想完全匹配的字符串示例(匹配 1):

This is a 
multi-line
string with some charakters like $ and / and ´
to match fully.

标签: regex

解决方案


在 Java regex 风格中,\X实际上不支持,任何代码点模式都可以用“任何非变音符号 + 任何零个或多个变音符号”表示,即\P{M}\p{M}*+.

但是,您只想匹配任何非空字符串。您可以使用

(?s)\A.+\z

图案。详情

  • (?s)- 一个嵌入的标志选项(等于Pattern.DOTALL在 Java 中),可以.匹配任何字符,包括换行符
  • \A- 字符串开始锚
  • .+- 任何一个或多个字符,尽可能多(这是一个贪婪的点模式)
  • \z- 字符串的最后。

要匹配任何非空和非空白字符串,您可以使用

(?s)\A\s*\S.*\z

\s*\S.*部分匹配零个或多个空格 ( \s*),然后匹配任何非空格字符 ( \S),然后.*匹配字符串的其余部分。


推荐阅读