【发布时间】:2011-01-20 15:21:20
【问题描述】:
RegEx 风格:wxRegEx.
我正在尝试创建一个与有时以空格开头的字符串匹配的“分组”正则表达式。当它不以空格开头时,它以目标组开头(以下示例中的第二个括号表达式)。它是由一些可预测的标记和任意文本的一部分组成的相对简单的行,例如
"good: Sed ut perspiciatis unde omnis iste natus error "
"better: Sit voluptatem accusantium doloremque laudantium "
"best: Nemo enim ipsam voluptatem quia voluptas "
" ok: Sit voluptatem accusantium doloremque laudantium "
注意:引用的字符不是我输入的一部分。通过在我的帖子中引入引号,我试图使每行/字符串的边界更清晰。
我想出的以“分组”方式匹配上述内容的正则表达式(即我可以分别处理每个组以进行进一步处理)是:
(^\s*)(good|better|best|ok)(: )(.*)( $)
注意:\s 是 wxRegEx 的 [[:space:]] 的类简写转义。
问题是这个正则表达式只在行实际上以空格开头时才有效。为什么? '\s' 后面的 '*' 不是表示“0 次或多次出现 \s”吗?
我知道我在这里遗漏了一些基本的东西,但它是什么?
【问题讨论】:
-
引号字符是您输入的一部分吗?
-
只是一个想法:如何将字符串开头的字符移出组,并使用问号使组可选?
^( \s*)?(good|better|be ... -
@Bazzz 我刚刚尝试了您的建议。相同的(错误)行为。
-
@slartidan 不,引用的字符不是我输入的一部分。通过在我的帖子中引入引号,我试图使每行/字符串的边界清晰。
标签: regex wxwidgets pattern-matching