Regex 将正则表达式转换为erlang';什么是语法?

Regex 将正则表达式转换为erlang';什么是语法?,regex,erlang,Regex,Erlang,我很难将下面的正则表达式转换为erlang语法 我有一个测试字符串,如下所示: 1,2==>3#SUP:1#CONF:1.0 我用regex101创建的正则表达式如下(见下文): ([\d,]+).*=>\s*(\d+)\s*#SUP:\s*(\d)\s*#CONF:\s*(\d+。\d+) : 但如果我将其转换为erlang,我会得到奇怪的匹配结果-以下是我的尝试: {ok, M} = re:compile("([\\d,]+).*==>\\s*(\\d+)\\s*#SUP:\\s*(\

我很难将下面的正则表达式转换为erlang语法

我有一个测试字符串,如下所示:

1,2==>3#SUP:1#CONF:1.0

我用regex101创建的正则表达式如下(见下文):

([\d,]+).*=>\s*(\d+)\s*#SUP:\s*(\d)\s*#CONF:\s*(\d+。\d+)

:

但如果我将其转换为erlang,我会得到奇怪的匹配结果-以下是我的尝试:

{ok, M} = re:compile("([\\d,]+).*==>\\s*(\\d+)\\s*#SUP:\\s*(\\d)\\s*#CONF:\\s*(\\d+.\\d+)").
re:run("1,2 ==> 3 #SUP: 1 #CONF: 1.0", M).
而且,我有四场以上的比赛。我做错了什么

以下是regex101版本:
我对
erlang
了解不多,但我会尽力解释。用你的正则表达式

>{ok, M} = re:compile("([\\d,]+).*==>\\s*(\\d+)\\s*#SUP:\\s*(\\d)\\s*#CONF:\\s*(\\d+.\\d+)").
>re:run("1,2 ==> 3 #SUP: 1 #CONF: 1.0", M).                                                  
{match,[{0, 28},{0,3},{8,1},{16,1},{25,3}]}
         ^^ ^^
         || ||
         || Total number of matched characters from starting index
   Starting index of match
超过四组的原因

第一个匹配始终表示由完整正则表达式匹配的整个字符串,其余为您想要的四个捕获组。总共有5组

([\\d,]+).*==>\\s*(\\d+)\\s*#SUP:\\s*(\\d)\\s*#CONF:\\s*(\\d+.\\d+)
<------->         <---->             <--->              <--------->
First group    Second group       Third group           Fourth group
<----------------------------------------------------------------->
This regex matches entire string and is first match you are getting
                      (Zero'th group)

可以找到更多信息

如果您对字符串的内容有疑问,可以打印它并签出:

1> RE = "([\\d,]+).*==>\\s*(\\d+)\\s*#SUP:\\s*(\\d)\\s*#CONF:\\s*(\\d+.\\d+)".
"([\\d,]+).*==>\\s*(\\d+)\\s*#SUP:\\s*(\\d)\\s*#CONF:\\s*(\\d+.\\d+)"
2> io:format("RE: /~s/~n", [RE]).
RE: /([\d,]+).*==>\s*(\d+)\s*#SUP:\s*(\d)\s*#CONF:\s*(\d+.\d+)/
对于本期的其余部分,还有一个很好的例子

1> RE = "([\\d,]+).*==>\\s*(\\d+)\\s*#SUP:\\s*(\\d)\\s*#CONF:\\s*(\\d+.\\d+)".
"([\\d,]+).*==>\\s*(\\d+)\\s*#SUP:\\s*(\\d)\\s*#CONF:\\s*(\\d+.\\d+)"
2> io:format("RE: /~s/~n", [RE]).
RE: /([\d,]+).*==>\s*(\d+)\s*#SUP:\s*(\d)\s*#CONF:\s*(\d+.\d+)/