我从互联网上尝试了几种解决方案,并通过一些教程使自己工作了,但我无法使其工作。我尝试将字符串中的单词与之前和/或之后的随机字母,数字或点进行匹配。
例如
Meeting.Room
MeetingRoom21
房间
Meeting2Room
Meeting.room
12MeetingRoom110.MeetingRoom
我尝试匹配“ Room”一词,但不应区分大小写。
我最后尝试的模式是:\ b()(\ w Room \ w )\ b \ ig
但是我使用正则表达式的次数不多,三个月后我很难解决问题。
我希望有人能帮助我。
set()
答案 0 :(得分:5)
因此,您想查看输入内容是否包含“房间”一词?在这种情况下,不需要正则表达式,只需执行简单的索引检查
return culture.CompareInfo.IndexOf(input, "room", CompareOptions.IgnoreCase) >= 0
文化是CultureInfo的实例。
答案 1 :(得分:3)
为什么要使用正则表达式?只需使用。包含...
public bool CheckForMatch(string input, string pattern)
{
return input.Contains(pattern, StringComparison.OrdinalIgnoreCase);
}
答案 2 :(得分:1)
我的猜测是,也许您可能想设计一个表达式以在不同的设置中找到room
,例如:
\B(room)\B|\b(room)\b|(room)
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\B(room)\B|\b(room)\b|(room)";
string input = @"Meeting.Room
MeetingRoom21
Room
Meeting2Room
Meeting.room
12MeetingRoom110.MeetingRoom";
RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
在this demo的右上角对表达式进行了说明,如果您想探索/简化/修改它,在this link中,您可以观察它如何与某些示例输入步骤匹配一步一步,如果您喜欢。
答案 3 :(得分:0)
仅供参考要匹配数字,请使用'\ d',对于非字母字符,请使用'\ W',要定义匹配组,请使用括号()和方括号进行可选匹配
使用http://regexstorm.net/tester创建了一个正则表达式...但是我感到困惑,为什么当您只使用indexOf时却需要这么做
要忽略可以使用的前导元素
[\d\W]*(Meeting)?(Room)