正则表达式匹配,在主题字符串中划线

时间:2013-04-12 13:28:01

标签: c# .net regex

var subject = "Parametre - Bloc Notes"
var match = Regex.Match(subject, "(?i)(?:blah|para|foo).*?");
// This will work 
//"Para" doesn't match "Param" and it is before the dash

var subject = "Parametre - Bloc Notes"
var match = Regex.Match(subject, "(?i)(?:blah|blo|foo).*?");
// This will not work
// "Blo" match "Bloc" and it is after the dash

我认为“ - ”是我误解的主要原因。

编辑:

我很抱歉,所以我希望正则表达式在破折号之前与Param相匹配,我该怎么做?

编辑2:

我承认我的问题非常模糊,所以我的目标是找到任何字符串中的Parametre字。

1 个答案:

答案 0 :(得分:1)

要匹配-之前的任何字词,您只需执行此操作:

/(\w+)\s*\-/

在上面的示例中,第一组将是“Parametre”。例如,

"Foo - bar baz" // first group will be "Foo"

"Hello - World" // first group will be "Hello"

更新:我似乎误解了你的问题。如果意图只是想知道字符串中是否存在“Parametre”一词,则可以使用String.Contains

"Parametre - Bloc Notes".Contains("Parametre"); // true

或者,如果您关注单词边界(即想要匹配“Parametres”),您仍然可以使用正则表达式:

/\bParametre\b/