2014-03-05 254 views
0

任何人都可以幫我解決正則表達式問題嗎?如何接受包含'999-'但不包含'999-99.999'的線

我需要創建一個模式來定位文本'999 - '但不包含格式爲'999-99.999'的任何文本。

例子:

  • 「序列:免費999-9工程」 ---->必須找到
  • 「序列:代碼AG 1234-56.789」 ---->不應該覺得

目前我有以下的正則表達式,但不工作,所以你不必.999「999-99」

^((?![0-9]{3}-[0-9]{2}.[0-9]{3}).)*$ 

你能幫忙我?

+6

請[編輯]你的問題,包括它應該(也不應該)匹配的幾個例子。 –

+0

同意w/@Ken,我們需要看到更多應該和不應該匹配的例子。我無法理解你想從你的問題中找到什麼。 –

+0

您只需要執行一個模式來查找文本'^ \ d {3} [] - $' – sln

回答

0

請記住,您使用的是.而不是\.它應該仍然有效,但我認爲這值得一提。我不能寫評論,所以我將其作爲我答案的一部分。另外,在原始問題中有999之後有一個空格,我不確定這是否恰當或不考慮您提供的正則表達式。

我嘗試這樣做:

\b(999-)(?!99\.999) 

如果你正在尋找任何號碼,您可以用\d小號

我想這在regex101.com和它的作品,但我第二肯取代那些9小號誰評論你的原始文章,我認爲你需要更多的細節。

+1

嘗試999-在行尾。 – Joshua

+0

我明白你的意思了。所以也許有一些字的邊界是有序的。 – Andrew

+0

嗯,我想我可能更好刪除這個,直到他澄清他的問題。 – Andrew

0

這可能會實現

# @"(?s)^(?=(?:(?!\d+-\d{2}\.\d{3}).)+$).*\d+-.*$" 

(?s)    # Dot-All 
^     # BOS 
(?=    # Not this form anywhere in the string 
     (?: 
      (?! \d+ - \d{2} \. \d{3}) 
      . 
    )+ 
     $ 
) 
.* \d+ - .*  # Form needed 
$     # EOS 
+0

我在http://stackoverflow.com/questions/22207365/how-to-accept-a-word-345-0-and-to-reject-555-55-00-in-the-same中發佈了這個簡化問題-線 –

相關問題