正则表达式匹配单行文本,但当多行文本匹配时则不匹配
本文关键字:文本 不匹配 单行 正则表达式 | 更新日期: 2023-09-27 18:36:22
我有一些正则表达式,它与FastColoredTextBox
控件一起使用,以识别需要在TextChanged
事件上设置其TextStyle
的文本。我特别难以识别此正则表达式的问题。
@"(^STEP's|^'s+STEP's)(.*)$"
在我的语言中,我有一个命令STEP
它有一个参数,该参数是一个有效的String
(步骤名称)。在我的编辑器和解析器中,该命令只有在其自己的行中,前面有 0-N 个空格字符,后跟一个空格,后跟有效字符串,后跟行尾时,才能解析该命令。
我的问题是上面的正则表达式与所有实例不匹配,这些实例很难定义(正则表达式令人困惑)。例如,将以下文本粘贴到我的编辑器中会导致步骤名称正确突出显示
STEP My Special Step Name
以为此文本导致它没有突出显示
STEP My Special Step Name
// Comment
随之而来的是
//Comment
STEP My Special Step Name
据我所知,我尝试匹配的文本是否包含不匹配的换行符。我必须假设我对锚点的使用(? ^
和$
是问题所在,但我看不出它们是否与行的开头匹配?
我最初开始正则表达式试图匹配换行符,但很快就证明它超出了我的掌握范围。我偶然发现了^
,并在此过程中$
,并决定它们会很好地工作,尽管我想我错了?
尝试将多行模式与模式一起使用:
(?m)(^STEP's|^'s+STEP's)(.*)$
↳ MSDN 正则表达式多行参考