我有这些输入:正则表达式掩蔽图案
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