.Net正则表达式仅在输入结束或使用换行符/空格时匹配

.Net正则表达式仅在输入结束或使用换行符/空格时匹配,.net,regex,.net,Regex,我有一个.Net正则表达式,它的工作原理几乎和预期的一样(应该匹配特定标识符键后面的值,后跟括号内一组可选的空格分隔值,请参见),但是它的匹配有点过于松散 基本上,只有当match和optional()后跟输入的end、一个或多个空格或换行符时,它才应该匹配 使用的正则表达式是: ^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))? 和样本为: 标识符abc sdfadf尝试使用正向前瞻(有关更多详细信息,请参阅此示例)。例如,如果我们在正则表达式的末尾添

我有一个.Net正则表达式,它的工作原理几乎和预期的一样(应该匹配特定标识符键后面的值,后跟括号内一组可选的空格分隔值,请参见),但是它的匹配有点过于松散

基本上,只有当match和optional()后跟输入的end、一个或多个空格或换行符时,它才应该匹配

使用的正则表达式是:

^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))?
和样本为:


标识符abc sdfadf尝试使用正向前瞻(有关更多详细信息,请参阅此示例)。例如,如果我们在正则表达式的末尾添加
(?=\s |$)
,它将只匹配后跟空格或字符串结尾的字符串,但不匹配此空格:

^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))?(?=\s|$)
决赛?表示0或1次,因此这将匹配

^Identifier ([a-zA-Z0-9-_]+)
会匹配的

听起来你想要:

^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))?(?=[\s$])

最后一个
(?=[\s$])
说行尾或空格是一个积极的前瞻性

你真的应该把正则表达式放在问题中,并说明它为什么不起作用。谢谢Michal,但是如果字符串正好在最后一个字符之后结束,它就不匹配了(即使它应该匹配)。。如果它后面跟一个空格/换行符,那么它就是:Hi tolanj-这里也是一样,不幸的是,如果字符串的结尾直接像这样,那么它就不匹配了:。。如果后跟换行符/空格。。是的
^Identifier ([a-zA-Z0-9-_]+)
^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))?(?=[\s$])