在字符串前后查找随机数字的单词

时间:2019-07-11 13:59:57

标签: c# regex

我从互联网上尝试了几种解决方案,并通过一些教程使自己工作了,但我无法使其工作。我尝试将字符串中的单词与之前和/或之后的随机字母,数字或点进行匹配。

例如

Meeting.Room

MeetingRoom21

房间

Meeting2Room

Meeting.room

12MeetingRoom110.MeetingRoom

我尝试匹配“ Room”一词,但不应区分大小写。

我最后尝试的模式是:\ b()(\ w Room \ w )\ b \ ig

但是我使用正则表达式的次数不多,三个月后我很难解决问题。

我希望有人能帮助我。

set()

4 个答案:

答案 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)