我的目標字符串看起來像這樣somecrap +num3.whatever-something
。 我想找個形式的所有子NUM<SOMENUMBER><DOT><WHATEVER>
如何提高我的正則表達式(不起作用)
(警告:我不會想匹配看起來像這樣的字符串:whatever.num3.whatever
)
注:我想能夠檢索子串的數目和起始索引(即,分別通過做myMatcher.group(1)
和myMatcher.start()
)。
所以我試過這個正則表達式\\bnum(\\d*)(?=\\.)
,但是那會匹配foo.num3.bar
。
所以我改成了[^\\.]\\bnum(\\d*)(?=\\.)
希望它會排除所有地方num
前綴以點串,但隨後myMatcher.start()
上"+(num3.bar)"
會給我左括號(
(而不是n
)的索引。 (因爲PAREN == NOT DOT
)
那麼你能告訴我如何修復我的正則表達式嗎?
如果'num'必須是在字符串的開頭,使用'^'(而不是'\\ b')。 – ajb
你說的字符串必須以'num'開始,那麼爲什麼你在'num'之前匹配'.'? –
當你說「子串的開始索引」時,你在說什麼子串?如果你的意思是以'num'開頭的那個,那麼因爲你希望'num'在字符串的開頭,那麼它不會總是爲0嗎? – ajb