2015-03-18 42 views
-2

我需要幫助將等於代碼轉換爲匹配(正則表達式)。非常感謝。將java代碼轉換爲一個正則表達式

//string composed of prefix and suffix - Can be spaced 
    //PREFIX - alfa-numeric, variable length, upper/lower case 
    //SUFFIX - numeric, variable length, can be spaced 
    String str="xpto 123 456 789"; 

    String prefix_to_search="XPTO"; 
    String digits_to_search="123456789"; 

    //remove prefix (case insensitive) 
    str.substring(str.toUpperCase().startsWith(prefix_to_search) ? prefix_to_search.length() : 0). 
    //remove spaces 
    replace(" ",""). 
    equals(digits_to_search)); 

給定一個字符串 「xpto 123 456 789」

MATCH
「123456789」
「123 456 789」
「1 2 3 4 5 6 7 8 9」
「XPTO 123 456 789」
「XPTO 1 2 3 4 5 6 7 8 9」

NOT MATCH
「12345678」
「1234567890」
「XPTO 12345678」
「XPTO 1234567890」
「XP 123 456 789」
「123 456 789 XPTO」

換句話說:
- 前綴必須是IGNORED(case INSENSITVE!)
- 數字必須匹配(空格必須忽略!)

+0

請記住,你也可以在www.regexr.com上試試它 – ha9u63ar 2015-03-18 22:27:21

+0

爲什麼?如果你的代碼有效,你是否真的需要改變它? – 2015-03-18 22:31:45

+0

它將應用於QUERY!我沒有可用的所有字符串函數,但我可以使用「匹配」! – marcolopes 2015-03-18 22:36:16

回答

-1

這應該做到這一點(假設它是特定於這個問題)

(?i)\bxpto[0-9\W]+ 

你可以去檢查它www.regexplanet.com

+0

@marcolopes,而不是說「它不工作」,請發佈您的預期輸出,以便我們能夠理解你到底在期待什麼。你被要求由其他用戶這樣做,你所說的「它不工作」.... – ha9u63ar 2015-03-18 23:07:59

1
(?i)(?:xpto)?\\s*1\\s*2\\s*3\\s*4\\s*5\\s*6\\s*7\\s*8\\s*9 

如果你想始終與前綴匹配過,去掉?前綴組之後(從你的更新看來,前綴並不是強制性的)

相關問題