我一直在試圖研究正則表達式;但是,我似乎無法理解這兩個正則表達式的意思。複雜的正則表達式
private static final Pattern BALANCED_TEXT =
Pattern.compile("(?s)((?:\\\\.|[^\\\\{}]"
+ "|[{](?:\\\\.|[^\\\\{}])*[}])*)"
+ "\\}"
+ "|.");
private static final Pattern INPUT_PATTERN =
Pattern.compile("(?s)(\\p{Blank}+)"
+ "|(\\r?\\n((?:\\r?\\n)+)?)"
+ "|\\\\([\\p{Blank}{}\\\\])"
+ "|\\\\(\\p{Alpha}+)([{]?)"
+ "|((?:[^\\p{Blank}\\r\\n\\\\{}]+))"
+ "|(.)");
我將不勝感激,如果有人可以深入解釋這兩個正則表達式語句給我。提前致謝!
根據[documentation](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)'(?s)'是DOTALL標誌。它會讓點'.'也匹配新的線條標記。 '\\ p {空白}'與空格或製表符'[\ t]'相同,因此您可以在正則表達式中替換它。 '\\ p {Alpha}'與'[\ p {Lower} \ p {Upper}]'相同,與'[a-zA-Z]'相同。現在只需打印'BALANCED_TEXT'和'INPUT_PATTERN'並在https://www.debuggex.com/和http://regex101.com/上使用它們來查看它們的工作方式。如果需要也刪除'(?s)'。 – Pshemo
我很困惑什麼?:和[^ \\\\ {}]的意思。還有什麼是+號的重點? –
你說你有bean試圖學習正則表達式:/'+'表示元素或組在重複一次或多次之前。 '(?:xxx)'是[非捕獲組](http://stackoverflow.com/q/3512471/1393766)。 '[^ abc]'表示除['^ ...]之外的所有字符,所以在[[\\\\ {}]的情況下,它與每個字符相同,但不是\,{,或} 。 – Pshemo