2

我在 F# 中编写了以下代码:

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

但它不打印任何东西..

我希望正则表达式只表示完全是“}”或“。”的字符串。, 在同一行中没有任何后续或前面的字符。请问有谁知道我应该怎么改?

谢谢.. :)

4

2 回答 2

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... :("

这会在第一行打印“Matched”,在第二行打印“Not Matched”。

但是检查这个字符串是否等于“}”和“。”不是更好吗?抱歉,刚刚开始探索 F#。

于 2012-06-24T00:07:06.183 回答
1

问题是,什么是“。” 不被视为单词边界。所以 \b" 匹配 'A"',但不匹配 '."'。

于 2012-06-23T23:57:21.760 回答