我创建了一个正则表达式,该表达式应匹配以Project开头的行,后跟#或:或 - 后跟1到3位数字或简称Title。 例如,以下行应匹配
项目#1
项目#1
项目:1
项目-123
项目名称
但是以下内容不匹配
项目ABCD
项目* 978
我的项目
处理的项目
我的正则表达式如下:
^(\s)*?((Project( )*?(#|:|-| )( )*?(\d){1,3})|(PROJECT( )*?(#|:|-| )( )*?(\d){1,3})|Project Title|PROJECT TITLE)\b
项目关键字应位于该行的开头。
对于某些文本,这个正则表达式工作正常。 但是这个正则表达式匹配以下行:
项目处理:
我不知道为什么会这样。 任何人都可以找出我的正则表达式有什么问题吗?
我正在使用C#来做到这一点。
提前致谢!!!
答案 0 :(得分:1)
这种模式怎么样?
@"Project\s*[#: -]\s*(?:\d+|[A-Z][a-z]+)"
与
不匹配项目ABCD
项目* 978
我的项目
处理的项目
但是会匹配以下模式
Project # 1
Project#1
Project :1
Project-123
Project Title
虽然项目标题和项目ABCD 存在混淆部分。 我以为你只想要标题案例。
答案 1 :(得分:1)
这对我有用:
Regex project = new Regex(@"^\s*?(?:Project *[#:\- ] *(\d){1,3}|Project Title)",
RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline);
答案 2 :(得分:1)
^\s*Project\s*([\-#:]\s*\d{1,3}|Title)\b
这允许在Project
之前和之后以及-#:
和三位数之间的可选空格