3

我想匹配表单的表达式

set _ on(\s*)set _ off

其中两个下划线都_代表一个连续的字符串。

这个想法是匹配以下内容:

set foo on blah halb set foo off

设置栏打开 设置栏打开 设置栏打开 设置栏关闭

重要的是,在我的情况下,这些指令以设置为开始,以设置为结束。

4

3 回答 3

1

怎么样

set\s[^\s]+\son
set\s[^\s]+\soff

说明:[^\s]+匹配不包含空格的字符串。set\s[^\s]+\son匹配任何类似的东西set foo on,但不匹配set foo bar onor set on。结合上述表达式将匹配您想要的任何内容。

您使用哪种正则表达式?

于 2012-10-09T19:02:07.400 回答
1

您可以在 perl 中进行反向引用:

m/^\s*set\s*(\w*)\s*on.*set\s*\1\s*off\s*$/
于 2012-10-09T19:05:09.200 回答
0
^(set bar on)|(set bar off)$

分解:

^(set bar on) = Looks for "set bar on" at the beginning of a string
(set bar off)$ = Looks for "set bar off" at the end of the string.

这将匹配set bar on字符串开头和set bar off结尾处的 a。您可以进行替换以将它们更改为空白字符"",然后将剩余的数据拉出以进行匹配。我不知道您在执行正则表达式时使用什么,所以除此之外我无能为力。\s如果要删除set bar on前后的空格,也可以在开头和结尾添加set bar off

于 2012-10-09T19:42:01.427 回答