【发布时间】:2015-10-16 05:30:52
【问题描述】:
我正在尝试创建一个不区分大小写前缀的正则表达式。我有以下内容,但我不确定这是否正确:
String value1 = "97 ebt ue i ua so sufi iqc k";
String pattern1 = "(?=(\\b(?i:.*s.*)))(?=(\\b(?i:.*q.*)))";
在我的示例中,我试图在 value1 中找到 pattern1 的匹配项。据我了解:
-
\\b匹配字符串中的任何单词 -
:.*和.*不区分大小写
这在某些情况下有效,但在其他情况下失败。我无法弄清楚这个问题。
更新:
这里的情况返回真,但它应该返回假。问题是应该有任何以s 结尾的词和另一个以q 结尾的词,所以因为它们中的任何一个都没有结尾,所以它应该失败。
【问题讨论】:
-
您要查找的输出是什么?
\\b只是一个词的边界,它不匹配一个词。(?i)只能在开头使用一次,整个模式不区分大小写。 -
适用和失败的情况是什么。能举几个例子吗?
-
我已经更新了我的问题
-
请发布完整的相关代码。
-
如果您要查找“以 s 结尾”和“以 q 结尾”,那么在每个模式组的末尾加上 .* 似乎是错误的,因为您还将匹配任何带有 s 或q 在中间。
标签: java regex pattern-matching