2012-06-23 4 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

Проблема заключается в том, что то, что "" не считается границей слов. «."». Так что \ б«соответствует «А»», но не

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

Печатает «совпадениям» на первой линии, и «Not Matched» на втором.

Но не лучше просто проверить, является ли эта строка равна «}» и «» «Извините, просто начав изучать F #.

+0

Спасибо, я попробую :) У меня слишком много необязательных символов, чтобы попробовать каждую строку. – cookya

+0

Это не работает - оно распознает "}." – cookya

+0

Ну, это действительно странно: я обновил ответ с полным кодом, который просто работает - '}.' не соответствует. Не могли бы вы показать свой код? Полагаю, должна быть разница. – raina77ow