Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex类似于解析函数参数,例如foo(var,bar)和在Ruby中获取var_Ruby_Regex - Fatal编程技术网

Regex类似于解析函数参数,例如foo(var,bar)和在Ruby中获取var

Regex类似于解析函数参数,例如foo(var,bar)和在Ruby中获取var,ruby,regex,Ruby,Regex,如果我有一个字符串,看起来像“TEST(10,20,30)”,我怎么能从这个字符串中拉出10呢 我试过了 /\(([^\)]+)\)/ 这就得到了括号的内部,但是当我尝试添加逗号时,例如 /\(([^\),]+)\)/ 然后没有匹配项。这是因为您需要告诉正则表达式也匹配逗号和右括号之间的内容(或者不匹配): 或 正如您所见,您也不需要在字符类中转义括号。这是因为您需要告诉正则表达式也要匹配逗号和右括号之间的内容(或者省略): 或 正如您所看到的,您也不需要在字符类中转义括号。希望这可以指导您

如果我有一个字符串,看起来像“TEST(10,20,30)”,我怎么能从这个字符串中拉出10呢

我试过了

/\(([^\)]+)\)/
这就得到了括号的内部,但是当我尝试添加逗号时,例如

/\(([^\),]+)\)/

然后没有匹配项。

这是因为您需要告诉正则表达式也匹配逗号和右括号之间的内容(或者不匹配):


正如您所见,您也不需要在字符类中转义括号。

这是因为您需要告诉正则表达式也要匹配逗号和右括号之间的内容(或者省略):


正如您所看到的,您也不需要在字符类中转义括号。

希望这可以指导您正确的方向:

irb(main):001:0> str = "TEST(10,20,30)"
=> "TEST(10,20,30)"
irb(main):002:0> str =~ /\w+\(([^,]+),.+\)/
=> 0
irb(main):003:0> $~[1]
=> "10"
正则表达式执行以下操作:
\w+
一个或多个单词字符(“测试”)

([^,]+)
对于任何不是逗号的对象,这将匹配从左偏旁到逗号的所有对象


正则表达式的其余部分忽略了其他参数,但可以对其进行修改,以将它们包含在单独的组中。

希望这可以指导您正确的方向:

irb(main):001:0> str = "TEST(10,20,30)"
=> "TEST(10,20,30)"
irb(main):002:0> str =~ /\w+\(([^,]+),.+\)/
=> 0
irb(main):003:0> $~[1]
=> "10"
正则表达式执行以下操作:
\w+
一个或多个单词字符(“测试”)

([^,]+)
对于任何不是逗号的对象,这将匹配从左偏旁到逗号的所有对象


正则表达式的其余部分忽略了其他参数,但可以对其进行修改,以将它们包含在单独的组中。

在这种情况下,要拾取的零件的模式比要丢弃的零件的模式简单得多

"TEST(10,20,30)"[/\d+/] # => 10

在这种情况下,要拾取的零件的模式比要丢弃的零件的模式简单得多

"TEST(10,20,30)"[/\d+/] # => 10
我怎么能从这根绳子上拔出10个呢

使用
lookahead
lookahead

(?<=\()\d+(?=,)
(?
我怎么能从这根绳子上拔出10个呢

使用
lookahead
lookahead

(?<=\()\d+(?=,)

(?我想你把它复杂了一点;)我只是尽量接近原始尝试,让它更容易理解。但是,是的,有更好的解决方案;)我想你把它复杂了一点;)我只是尽量接近原始尝试,让它更容易理解。但是,是的,有更好的解决方案;)