繁体   English   中英

Java Regex单词边界\\\\ bbackup \\\\ b

[英]Java Regex word boundaries \\bbackup\\b

我正在尝试匹配其中包含字符串Copy-Of的2个模式。 我正在为比赛使用单词边界\\ b ... \\ b,但是我遇到了问题。

string = "This is a backup-Copy-Of your CD can you make a Copy-Of it?"

现在,我要匹配backup-Copy-Of和Copy-Of

if (Pattern.compile("\\bCopy-Of\\b").matcher(Parameter).find()) {

这将匹配(backup-Copy-Of)的Copy-Of和本身的Copy-Of。

该程序仍然可以运行到这一点,但是当我在它下面添加一行时出现错误。

if (Pattern.compile("\\bbackup-Copy-Of\\b").matcher(Parameter).find()) {

而且,如果我删除了第一个模式匹配项(“ \\ bCopy-Of \\ b”),而仅保留了第二个模式匹配项(“ \\ bbackup-Copy-Of \\ b”),则该模式运行不会出现任何问题。

So What is the correct way to match for backup-Copy-Of and Copy-Of.

结果应为:

1 match for  backup-Copy-Of
1 match for Copy-Of

您需要启用i修饰符,因为Of o是小写字母,但在输入中是大写字母,并且由于正则表达式包含backup而在输入中又是back因此您还必须将其up为可选。

if (Pattern.compile("(?i)\\bback(?:up)?-Copy-of\\b").matcher(Parameter).find()) {

要么

Matcher m = Pattern.compile("(?<!\\S)back(?:up)?-Copy-Of(?!\\S)").matcher(Parameter);
if(m.find()) {

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM