作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图想出一种模式来查找 Java 源代码中双引号或单引号之间的每个文本。这是我的:
"(.*?)"|’(.*?)’
这几乎适用于我猜的所有情况,除了一个:
"text\"moretext\"evenmore"
这可以用作有效的字符串定义,因为引号被转义了。该模式无法识别更多文本的内部部分。
对解释这种情况的模式有什么想法吗?
最佳答案
您可以使用此正则表达式匹配单引号或双引号字符串,忽略所有转义引号:
(["'])([^\\]*?(?:\\.[^\\]*?)*)\1
正则表达式分解:
(["'])
:匹配单引号或双引号并将其捕获到组#1(
: 开始捕获第 2 组
[^\\]*?
:匹配 0 个或多个不是 \
\\
:匹配一个\
.
:后跟任何被转义的字符[^\\]*?
:后跟 0 个或多个非 \
字符)*
:结束非捕获组。匹配 0 个或多个这个非捕获组)
:结束捕获组 #2\1
:匹配组 #1 中结束的单引号或双引号匹配关于java - 带反斜杠转义的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521098/
我是一名优秀的程序员,十分优秀!