无法让Erlang重新为多线工作,请帮忙!
> re:run("hello,\nworld", "o,.*w", [multiline]).
nomatch
> re:run("hello,\nworld", "o,.*w", [multiline, {newline, lf}]).
nomatch
> {ok, MP} = re:compile("o,.*w", [multiline]).
{ok,{re_pattern,0,0,
<<69,82,67,80,55,0,0,0,2,0,0,0,7,0,0,0,0,0,0,0,111,0,
119,...>>}}
> re:run("hello,\nworld", MP).
nomatch
> re:run("hello,\nworld", ",\nw").
{match,[{5,3}]}
答案 0 :(得分:7)
multiline
选项只告诉正则表达式引擎将^
不仅视为字符串的开头,而且还视为新行的开头,它还告诉引擎处理{{} 1}}不仅作为字符串的结尾,而且作为一行的结尾。
请改为尝试:
$
re:run("hello,\nworld", "o,.*w", [dotall])
选项将告诉正则表达式引擎也允许换行符与DOT元字符匹配。
答案 1 :(得分:2)
使用dotall选项,即
> re:run("hello,\nworld", "o,.*w", [dotall]).
{match,[{4,4}]}