搜索文本中的 Java RegEx 单引号失败模式

标签 java regex

当我的文本包含单引号时,该模式会失败。

我试图像 Perl 中那样使用 \\Q\\E 来解决它,但模式编译失败。

例如

对于模式“(?i)名称为\\b(\\w+)\\b”

如果文本是“我的名字是 Foampile X”,我会得到匹配。但对于“我的名字是'Foampile'”我没有得到匹配。

如何将文本中的单引号视为任何其他字符?

最佳答案

我发现在任何情况下都得到匹配很奇怪,因为您忽略了 Foampile 之前的空格(\b 不消耗字符)。请注意,\w 不匹配引号,而只匹配[a-zA-Z0-9_]。因此,根据您是否想要包含引号,您可以尝试以下之一:

"(?i)Name is\\W+(\\w+)"
or
"(?i)Name is\\W+?('?\\w+'?)"

如果您想断言名称恰好由一个空格分隔,无论是否加引号,都可以简化为:

"(?i)Name is '?(\\w+)'?"
or
"(?i)Name is ('?\\w+'?)"

并且如果您的问题实际上意味着您只是在不带引号的情况下进行了测试,但您的实际目标是仅接受引号中的名称,那么您可以省略所有这些 ?'后面。

但是,无论任何非单词字符将名称与句子的其余部分分隔开,第一个变体都会起作用。

关于搜索文本中的 Java RegEx 单引号失败模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850529/

相关文章:

java - Spring Web 客户端 : How to stream large byte[] to file?

java - Android:如果 EditText 在 x 秒内未更改,则调用函数

java - 如何在不创建大量指向旧包的完全指定链接的情况下在 IntelliJ 中复制包

java - 如何将 Java 项目集成到动态 Web 项目中

c++ - 将 LTR 转换为 RTL?

regex - 如何在 Scala 中使用正则表达式?

java - 使用 Apache POI 的基本 Excel 货币格式

日期格式的java正则表达式提取错误信息

php - 如何捕捉 Marz/März/März?

python - 用于捕获 HTML 源代码中花括号之间所有内容的正则表达式