正则表达式匹配单行文本,但当多行文本匹配时则不匹配

本文关键字:文本 不匹配 单行 正则表达式 | 更新日期: 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 正则表达式多行参考