字符串裏面的零件能否請你幫我寫了下面的字符串正則表達式,
Hi $(abc) frnd $(xyz)
在本文中我想匹配不被$()
。所以包圍所有單詞,在上面的字符串我想匹配Hi
和frnd
我試着用\$((.[^)]*.))
但它匹配$(ABC)和$(XYZ)。但我想匹配符號外的那些
字符串裏面的零件能否請你幫我寫了下面的字符串正則表達式,
Hi $(abc) frnd $(xyz)
在本文中我想匹配不被$()
。所以包圍所有單詞,在上面的字符串我想匹配Hi
和frnd
我試着用\$((.[^)]*.))
但它匹配$(ABC)和$(XYZ)。但我想匹配符號外的那些
您可以在Java中使用否定向後看嗎?這似乎在C#中工作(但你永遠無法知道100%的正則表達式!)下面的代碼
(?<!\$\([A-Za-z]*)[A-Za-z]+(?!\))
Java支持負面後視,但不支持C#等可變寬度。你的正則表達式不能用Java編譯。 – nhahtdh
嘗試將打印所需的輸出。
public static void main(String[] args)
{
String text = "Hi $(abc) frnd $(xyz)";
String[] textArr = text.split("\\$\\([^)]*\\)");
for (String word : textArr)
{
System.out.println(word.trim());
}
}
讓我知道它是否工作或需要修改 –
您可以分割字符串成部分不包含$(...)
,或者您可以使用replaceAll
功能刪除$(...)
。
// Raw regex: \$\([^)]+\)
str.split("\\$\\([^)]+\\)");
str.replaceAll("\\$\\([^)]+\\)", "")
然後你可以提取所有你想要的文本。正則表達式假定$(...)
之間的文本不允許指定)
。在$(abc$(crap)_outside
等情況下,替換後只剩下。
它可以編寫一個正則表達式來挑出來的話而忽視$(...)
,通過最後一場比賽邊界\G
,但它是簡單的,按上述:文本匹配之前刪除$(...)
部分。
我想在java中。我用\ $((。[^)] *。))試過,但是這與$(abc)$(xyz)匹配。但我想要倒置。 –
@Lenymm - 我不確定它是否重複。 – Shai
Actualy no。我認爲這是正確的答案。 – Lenymm