我需要正則表達式來刪除匹配前的任何文本並且包含匹配Java正則表達式之前的所有內容幷包含匹配
例如,我想刪除「123S」,一切都在它之前,我知道我可以
string.replaceAll("^.*?(?=[123S])","");
string.replaceAll("123S","");
這樣做,但真的想這樣做,在一個單一的表達式(無法找到另一個例子中的任何地方!)
我需要正則表達式來刪除匹配前的任何文本並且包含匹配Java正則表達式之前的所有內容幷包含匹配
例如,我想刪除「123S」,一切都在它之前,我知道我可以
string.replaceAll("^.*?(?=[123S])","");
string.replaceAll("123S","");
這樣做,但真的想這樣做,在一個單一的表達式(無法找到另一個例子中的任何地方!)
你可以做到這一點:
string.replaceAll("^.*123S","");
刪除非貪婪?
去年發生和.*
之前的一切相匹配。
string.replaceAll("^.*?123S", "");
(?=
是「如果跟着」模式,你不想要的,[123S]甚至不改正它會趕上只是「2」的實例。
你不需要提前看:
"abc123Sdef123Sxyz".replaceAll("^.*?123S","");
這取代了第一 occurence而已,如果那是你所需要的(輸出def123Sxyz
)。
如果要替換,直至最後123S,只是刪除?
修改:
"abc123Sdef123Sxyz".replaceAll("^.*123S","");
輸出是xyz
。
這個問題並不清楚,但他可能真的想要。*?所以他可以找到第一場比賽而不是最後一場比賽。 –