2012-12-19 82 views
3

「UPPERCASEWORD UPPERCASEWORD lowercaseword UPPERCASEWORD UPPERCASEWORD」正則表達式匹配與開頭大寫單詞短語和結束

下面的正則表達式上面的圖案匹配良好,但不能匹配,如果有在中間的數字。 \ B [AZ] [AZ] [AZ] +(?:[\ SA-Z,] + [AZ] +)* \ b

「UPPERCASEWORD UPPERCASEWORD lowercaseword 1(或任何位數)UPPERCASEWORD UPPERCASEWORD」 將不匹配

任何想法如何在比賽中包含數字?我在[0-9]之間嘗試了一些選項,但沒有奏效。

+0

'[AZ] + \ s + [AZ] + \ S + [az] + \ s * [0-9] * \ s * [AZ] + \ s + [AZ] +' – pogo

+0

@pogo,我不認爲作者想要那裏的空間,否則他們現有的模式不會在沒有數字時工作。無可否認,這不是很清楚。示例數據對於這樣的問題有很大的幫助。 –

+0

您使用哪種語言或工具? –

回答

3

實際上給定的模式出現匹配:

  1. 3個或更多大寫字符,然後
  2. 1以上小寫字符(或逗號或空格),然後
  3. 1或多個上大小寫字符

您可能希望這種模式:

\b[A-Z][A-Z][A-Z]+(?:[\sa-z,]+[0-9]*[A-Z]+)*\b 

這就相當於:如果你希望允許只有2(或可能更多)小寫的人之前大寫字母,那麼這

\b[A-Z]{3,}(?:[\sa-z,]+[0-9]*[A-Z]+)*\b 

或者:

\b[A-Z]{2,}(?:[\sa-z,]+[0-9]*[A-Z]+)*\b 

這將有助於如果你發佈了一些測試數據。

更新:這聽起來像你想要的東西與你最初描述的完全不同。這會做,還是它匹配得太多?

\b[A-Z]{2}.*[A-Z]{2}\b 

如果過分相匹配,那麼如果你的工具支持負先行那麼這可能會奏效,但它變得相當混亂:

\b[A-Z]{2}((?!\b[a-z][a-z'0-9]+\b\s[a-z][a-z'0-9]+).)*[A-Z]{2}\b 
+0

謝謝!但上述公式仍然略過我在這裏有更好的數據:「到達我們的最佳時間和日期是星期一下午1點後,星期三星期三和星期三,而其他日子裏,我們不可用」 。我需要一個公式來配合一切,包括星期一到星期三。 – user1817376

+0

@ user1817376,我已經更新了我的答案。 –

+0

你絕對是上帝送來的!男人很理解,像魅力一樣工作!再次感謝!! – user1817376

相關問題