2013-03-04 76 views
0

正在使用某種文本書籤。這些書籤的結構如下: (#+ field +#)正則表達式:如何匹配特定字符序列前後的單詞幷包含其他字符

「字段」只能包含字母字符(A-Z和a-z,不包含數字或其他字符)。

我需要匹配不滿足此規則的單詞。

所以,考慮下面的例子:

  1. (#公司名稱#)
  2. (#COMPANY_NAME#)
  3. (#Company5Name#)

只有第一個是正確的但我必須匹配其他兩種情況。 匹配的第一個模式是:

(\(\#)[A-Za-z]+(\#\)) 

要匹配錯案我需要的是這樣的:

(\(\#)[^A-Za-z]+(\#\)) 

但是,這並不正常工作。

任何人都可以告訴我如何讓它工作?

在此先感謝和抱歉,我的英語水平...

回答

1

您可以嘗試

\(#[^#]*?[^A-Za-z#]+[^#]*?#\) 
+0

確保逃脫外括號(或刪除)。否則'[#CompanyName#]'看起來有效。內在的沒有任何用處。如果他們不包含#每個,那麼整個比賽失敗。 – FakeRainBrigand 2013-03-04 14:14:48

+0

它似乎幾乎正確,但它也捕獲以下情況: (#CompanyName#) - (#地址#) – speednick 2013-03-04 15:56:05

+0

@speednick現在呢? – alestanis 2013-03-04 15:59:31

1

這應該工作:

\(#.*?[^A-Za-z].*?#\) 

\( - 逃脫(
# - 哈希
.*? - 零個或多個野生卡(非貪心)
[^A-Za-z] - 單個無效字符
.*? - zer O以上的野生卡(非貪婪)
# - 哈希
\) - 轉義)

相關問題