2012-06-23 78 views
2

我寫了F#下面的代碼:這個正則表達式有什麼問題? (「」使用)

let regexSymbol = new Regex(@"\b\}|\.\b") 
if (Regex.IsMatch(".", regexSymbol.ToString())) then 
    printfn "symbol0" 

但它不會打印出任何東西..

我想正則表達式來僅表示是完全字符串「 }「 要麼 」。」 ,在同一行上沒有任何後續或前面的字符。 任何人都知道我該如何改變它?

謝謝.. :)

+0

那幾個鏈接或者是'''考慮使用_set_使它更具可讀性...... –

+0

@ K-ballo I made它現在更具可讀性。任何人? – cookya

+0

你能更具體地處理單詞邊界嗎?你想匹配哪些時期和右大括號?你究竟不想匹配哪一個? –

回答

1

問題是,什麼是「。」不被視爲單詞邊界。 「。「」所以\ B「匹配「A」」,而不是

+0

謝謝!我如何改變它以識別「。」但不是「.a」。例如? – cookya

+0

+1以準確回答原始問題。 –

2

如果你需要匹配字符串的方式,你會使用和字符串結束錨開始子字符串:

open System.Text.RegularExpressions 
let regexSymbol = new Regex("^[}.]$") // in this case verbatim is not required 
if (regexSymbol.IsMatch(".")) then printfn "Matched! :)" else printfn "Not matched... :(" 
if (regexSymbol.IsMatch("}.")) then printfn "Matched! :)" else printfn "Not matched... :(" 

「匹配」在第一行這版畫,以及「不匹配」的第二位。

但是是不是隻是爲了更好地檢查是否該字符串等於「}」和「」 ?對不起,剛開始探索F#

+0

謝謝,我會試試:) 我有太多的可選符號嘗試每個字符串的每一個.. – cookya

+0

它不起作用 - 它承認「}」。 – cookya

+0

好吧,那真的很奇怪:我已經用完整的代碼更新了答案,它只是起作用 - '}。'不匹配。你可以顯示你的代碼嗎?我想應該有區別。 – raina77ow

相關問題