我有這些輸入:正則表達式掩蔽圖案
DFDBDFDFDF21R123
DFDBDFDFDF34R123
我想匹配這些輸入,除了位置9和10中,象下面這樣:
DFDBDFDFxxR123
DFDBDFDFxxR123
所以,是明確的:匹配1-8,不包括9-10,匹配11-16。
我有這些輸入:正則表達式掩蔽圖案
DFDBDFDFDF21R123
DFDBDFDFDF34R123
我想匹配這些輸入,除了位置9和10中,象下面這樣:
DFDBDFDFxxR123
DFDBDFDFxxR123
所以,是明確的:匹配1-8,不包括9-10,匹配11-16。
要的
https://stackoverflow.com/users/557597/sln了辦法擴大({8})。(。+)
的 '東西' 你是從你的理解缺失正則表達式是「分組」
(SOME MATCHING SUB-STRING A)(SOME MATCHING SUB-STRING B)
如果使用正則表達式這樣,你可以做很多包括'拉出'部分,然後重新排列它們。但它也可以幫助你將你想要搜索的「零件」分組。
所以他
.{8}
比賽 ''這是'任何單個字符',然後{8}表示'匹配任何單個字符8次。
(.{8})
表示「將前8個字符分組」使用。
..
手段 '匹配任何兩個字符'
.+
手段「匹配1個或更多的 '任意字符'
(.+)
指「組1以上的「任意字符'供以後使用'
因此...
當你把它們放在一起,你得到
(.{8})..(.+)
這意味着「比賽第8個字符(任何8個字符)爲第1組」,然後「兩個任意字符」,然後「1個或更多字符組2」
這將允許您(取決於您的正則表達式客戶端/等)使用$ 1和$ 2打印出來,使用或...無論...組1和/或組2的值。
希望這有助於。
[如何匹配Java正則表達式中的任何字符?]可能重複(http://stackoverflow.com/questions/2912894/how-to-match-any-character-in-java-regular-expression ) – DavidS
爲什麼不用'(。{8})..(。+)'? – sln
或'string_new = string_old.replace(「(。{8})..(。+)」,「$ 1 $ 2」);' – sln