regex - RegEx:匹配任何非空字符串,包括换行符
问题描述
我想完全匹配任何非空的多行字符串。在 PHP-Flavour 中,我会使用\X
令牌来匹配任何字符,包括换行符。不幸的是,我需要使用\X
令牌不起作用的 Java。
我想完全匹配的字符串示例(匹配 1):
This is a
multi-line
string with some charakters like $ and / and ´
to match fully.
解决方案
在 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
),然后.*
匹配字符串的其余部分。
推荐阅读
- azure - 如何使用 SQLAlchemy 连接到 Azure 服务器中的 MySQL
- parsing - 有没有办法在解析后使用关联性和优先级表来修复带有运算符的表达式?
- python - 迭代不均匀列以找到现有值的最快方法
- javascript - 如何创建一个函数来获取 html 标题名称并将图像插入单独的网站
- android - 如何阻止 Visual Studio 自动创建密钥库文件?
- javascript - 在 JS 的 map() 函数中处理 2 个对象
- python - 在不使用 None 初始化类的情况下访问累积值
- mysql - 检索集合整数大于聚合关系计数的行
- bash - 无法在 bash 中读取值多字命令行参数
- reactjs - 在类组件上无法识别 React 的 PropTypes 导入