以下的正則表達式匹配「星期六」或「星期日」:(?:(Sat)ur|(Sun))day
在C#中的php(pcre)中找到的分支重置運算符(「?|」)是什麼?
但是在一種情況下而反向引用2是空的,在另一種情況下,反之亦然引用1被填充。
PHP(pcre)提供了一個很好的運算符「?|」這繞開了這個問題。以前的正則表達式將變成(?|(Sat)ur|(Sun))day
。所以不會有空的反向引用。
在C#中還是有一個等價的方法或一些解決方法?
以下的正則表達式匹配「星期六」或「星期日」:(?:(Sat)ur|(Sun))day
在C#中的php(pcre)中找到的分支重置運算符(「?|」)是什麼?
但是在一種情況下而反向引用2是空的,在另一種情況下,反之亦然引用1被填充。
PHP(pcre)提供了一個很好的運算符「?|」這繞開了這個問題。以前的正則表達式將變成(?|(Sat)ur|(Sun))day
。所以不會有空的反向引用。
在C#中還是有一個等價的方法或一些解決方法?
應該可以連接backref1和backref2。
由於每個之一始終是空的,空一個字符串連接仍然是相同的字符串...
與您正則表達式(?:(Sat)ur|(Sun))day
和更換$1$2
你Sat
爲Saturday
和Sun
爲Sunday
。
regex (?:(Sat)ur|(Sun))day input | backref1 _$1_ | backref2 _$2_ | 'concat' _$1$2_ ---------|---------------|---------------|---------------- Saturday | 'Sat' | '' | 'Sat'+'' = Sat Sunday | '' | 'Sun' | ''+'Sun' = Sun
而不是閱讀backref1或backref2只是讀取結果和concat結果。
可以使用分支復位操作:
(?|foo(bar)|still(life)|(like)so)
這將只設置一組無論哪個分支匹配。
在這裏,我認爲StackOverflow是尋找質量的地方,而不是答案中的數量。 – ensisNoctis 2017-12-20 07:07:29
您可以使用'(?:(星期六(?= ur)| Sun(?!ur))(?:你)?)day'代替。 :) – Gumbo 2011-03-21 12:58:19
@Gumbo爲什麼Sun沒有跟隨「你」?正則表達式有點複雜... – Stephan 2011-03-21 13:16:24
否則,'Sunurday'可以匹配。這有點像我犯的錯誤(其中_you_指出:) :) – 2011-03-21 13:18:09