[英]Regular Expressions in Using Pattern java
我有一個字符串如下。
$Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24"))
每當遇到上面的字符串時,我都需要生成以下字符串。我的意思是我需要在字符串后面附加“來自Stream”。
$Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24")) from Stream.
我目前正在使用以下模式在Java中實現相同的功能。
Pattern eventPattern = Pattern.compile(".*?\\.Alarm\\(.*?\\)");
但是我得到以下輸出。
$Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24") from Stream )
請向我提供一些指針以實現正確的輸出。正則表達式應僅考慮最后一個括號。
您需要在模式中包含匹配的括號。 類似於以下內容:
Pattern eventPattern = Pattern.compile(".*?\\.Alarm\\(([^\\(]*?|\\([^\\)]*?\\))*\\)");
直到並包括第一個打開的括號的內容: .*?\\\\.Alarm\\\\(
在內部任何內部括號之外的內容: [^\\\\(]*?
內部對對: \\\\([^\\\\)]*?\\\\)
匹配在parens外部或parens對內的任意數量的東西: ([^\\\\(]*?|\\\\([^\\\\)]*?\\\\))*
這個RegexPlanet網站是一個與正則表達式一起玩的好地方,以查看將如何工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.