gpt4 book ai didi

ruby - 正则表达式匹配文件中的空行和注释

转载 作者:太空宇宙 更新时间:2023-11-03 17:02:34 51 4
gpt4 key购买 nike

阅读时如何忽略文件中的注释或空白/空行?我以为 /^[\s#]*$/ 可以完成这项工作,但事实并非如此:

irb(main):180:0> open(inFile, 'r').each { |ln| puts ln if ln !~ /^[\s#]*$/ }
....
....
# and ..... ThIs Is A cOmMeNt .....
....
....
=> #<File:/tmp/running-instances.txt>
irb(main):181:0>

我在这里错过了什么?任何帮助将不胜感激。干杯!

附言。

不过我可以分两步完成:

open(inFile, 'r').each { |ln| next if ln =~ /^\s*$/; puts ln if ln !~ /#[^#]*$/ }

最佳答案

匹配注释和行尾

/
^ # match start of line
\s* # match zero or more spaces
(\#|$) # match comment symbol or end-of-line
/x

压缩后的正则表达式如下所示:

/^\s*(#|$)/

散文解释

\s* 表示可以匹配紧跟在行首之后的任意数量的空格,包括完全没有(\#|$) 使用 alternation , 因此括号内的任一模式都可以匹配。 注意:只有在使用 x option 时才需要反斜杠来转义注释符号, 忽略正则表达式中的空格和注释;如果您不使用 x,则不要使用反斜杠。

因此,该模式将匹配行首后跟可选的空格,然后必须紧跟注释符号或行尾。因为匹配是 anchored ,它将匹配"foo # bar""Array#string\n" 之类的字符串,因为它们不匹配所需的模式.

关于ruby - 正则表达式匹配文件中的空行和注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338100/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com