正则表达式匹配前缀

时间:2012-05-09 10:44:41

标签: .net regex

最初我有以下问题:

在文本框中添加多个GroupName。

  1. GroupName可以由"," / "or" / "OR"分隔。
  2. 输入不应以"," / "or" / "OR"开头或结尾。
  3. 例如:

    GroupName, GroupName or GroupName OR GroupName 
    GroupName, GroupName, GroupName, GroupName or GroupName
    

    为此,我找到了答案

    /^[a-zA-Z0-9\s]+(?:\s*(?:or|OR|,)\s*[a-zA-Z0-9\s]+)*$/
    

    如何修改此reqular表达式以支持or OR个关键字作为前缀。也不能有两个连续的前缀,例如:

    or or GroupName
    

    (以上示例无效输入。)

    任何人都可以帮助我吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

为什么不使用Regex.Split然后简化它,以便你的模式只是令牌?

所以你会说像

string[] substrings = Regex.Split(input, "[\w]?(OR|,)[\w]?", RegexOptions.IgnoreCase);

然后只丢弃空子串而不是担心防止空项目。顺便提一下,这种方法会将分隔符拉出到结果数组中,因为它们是一个捕获组,但链接的文档显示了如何避免这种情况。

另外,因为它忽略了空格,它可能会将“Oregon”之类的结果拉出“OR”和“Egon”,所以你可能想要强制“Or”运算符的空格匹配,尽管我会避免使用“,” “因为人们可能会毫无空间地使用它。