我有一个脚本,我需要跳过评论,我能够部分实现...
IN :
{****************************
{test : test...test }
Script:
if ( $data =~ m/(^{\*+$)/ ){
}
通过以上匹配,我能够识别评论并跳过它以获得下一行..
Out:
{test : test...test }
如果相同的评论由*所在的任何空格或任何字符组成,我的匹配失败..
IN:
{** ***** or {* abccd or {*abce
以上所有案件都未能跳过...... 在比赛中可能有什么问题,......任何人都可以帮助我......
答案 0 :(得分:1)
正则表达式中的$
是一个锚点,表示字符串/行的结尾,它坚持只有在初始*
之后有一行时才会发生匹配{ {1}}
删除此锚点将允许所有三种情况匹配:
{
答案 1 :(得分:0)
目前还不清楚文本中的注释语法究竟是什么,但是根据示例,我将假设在行的开头{*
,后跟任何内容直到该行的结尾,是一个评论。
在这种情况下,您的正则表达式/(^{\*+$)/
将无效。那说:
^
- 匹配行的开头{
- 匹配{
\*+
- 匹配一个或多个*
s $
- 匹配行尾如果*
和行尾之间还有其他内容,则此模式将不匹配。
像/^{\*.+$/
之类的东西应该做你想要的。这会更改您的模式以匹配一个或多个非换行符(.
),直到您到达行尾。
答案 2 :(得分:0)
如果您想允许{*
部分后面的其他一些字符,请从模式中删除$
。
这是一个简单的 Perl代码,您可以从以下开始:
@data = <main::DATA>;
print map { $_ if !/^{\*+/ } @data;
__DATA__
{****************************
{test : test...test}
<强>输出强>:
{test : test...test}
测试此代码here。