作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我终于开始学习正则表达式和训练 ack .我相信这使用 Perl 正则表达式。
我想匹配第一个非空白字符为 if (<word> !
的所有行, 元素之间有任意数量的空格。
这就是我想出的:
^[ \t]*if *\(\w+ *!
^[ \t]*
是错误的,因为它匹配一个或不匹配 [空格或制表符]。
// if (asdf != 0)
else if (asdf != 1)
ack -i --group -a '^\s*if *\(\w+ *!' c:/work/proj/proj
274: }else if (y != 0)
C:\Temp\regex>more ack.test
# ack.test
if (asdf != 0) # no spaces - ok
if (asdf != 0) # single space - ok
if (asdf != 0) # single tab - ok
if (asdf != 0) # multiple space - ok
if (asdf != 0) # multiple tab - ok
if (asdf != 0) # spaces + tab ok
if (asdf != 0) # tab + space ok
if (asdf != 0) # space + tab + space ok
// if (asdf != 0) # not ok
} else if (asdf != 0) # not ok
C:\Temp\regex>ack '^[ \t]*if *\(\w+ *!' ack.test
C:\Temp\regex>"C:\Program\git\bin\perl.exe" C:\bat\ack.pl '[ \t]*if *\(\w+ *!' a
ck.test
if (asdf != 0) # no spaces - ok
if (asdf != 0) # single space - ok
if (asdf != 0) # single tab - ok
if (asdf != 0) # multiple space - ok
if (asdf != 0) # multiple tab - ok
if (asdf != 0) # spaces + tab ok
if (asdf != 0) # tab + space ok
if (asdf != 0) # space + tab + space ok
// if (asdf != 0) # not ok
} else if (asdf != 0) # not ok
"C:\Program\git\bin\perl.exe" C:\bat\ack.pl %*
^^
转义插入符号不起作用。
" "
引用正则表达式而不是
' '
作品。我的问题是 DOS/win 问题,很抱歉打扰你们。
最佳答案
^\s*if\s*\(\S+\s*!
\S
对于非空白。 \w
不会匹配任何特殊字符,所以 if ($word
不会匹配。您的规范可能没问题,在这种情况下 \w
(字母数字加“_”关于regex - 为什么我的 ack 正则表达式会得到额外的、意想不到的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638596/
我是一名优秀的程序员,十分优秀!