Java Regex字边界\\ bbackup \\ b

时间:2015-11-18 00:21:43

标签: java regex

我正在尝试匹配2个具有字符串Copy-Of的模式。我正在使用单词边界\ 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

1 个答案:

答案 0 :(得分:0)

您需要启用i修饰符,因为o中的Of为小写,但输入中的大写字母为up,您还需要backup由于正则表达式包含back,因此在输入中它是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()) {

    [OperationContract]
    [WebInvoke(Method = "POST", 
        RequestFormat=WebMessageFormat.Json, 
        ResponseFormat = WebMessageFormat.Json, 
        BodyStyle = WebMessageBodyStyle.Wrapped, 
        UriTemplate = "PostUpdate/{userIMEI}")]

    string PostUpdate(string userIMEI, PostUpdateContract UserInfo);

DEMO