gpt4 book ai didi

ruby - 如何使用变量通过正则表达式匹配这段代码?

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:06 26 4
gpt4 key购买 nike

我正在尝试使用正则表达式在某些代码中查找匹配项。

我正在使用的字符串

"input[type=radio],input[type=checkbox] {"

为了匹配这个,我为每个括号添加了转义字符:

"input\[type=radio\],input\[type=checkbox\] \{"

我正在运行 .match 以在特定代码行中查找匹配项:

"input[type=radio],input[type=checkbox] {".match(/input\[type=radio\],input\[type=checkbox\] \{/)

哪个有效。但是当我将它们变成变量时,它不会。

str = "input[type=radio],input[type=checkbox] {"
code_to_match_against = "input\[type=radio\],input\[type=checkbox\] \{"

str.match(/#{code_to_match_against}/) # => nil

我做错了什么?

最佳答案

这里的双引号:

code_to_match_against = "input\[type=radio\],input\[type=checkbox\] \{"

正在吃掉你的反斜杠。考虑一下:

>> code_to_match_against = "input\[type=radio\],input\[type=checkbox\] \{"
>> p code_to_match_against
"input[type=radio],input[type=checkbox] {"

因此,当您将 code_to_match_against 插入正则表达式时,正则表达式引擎认为您使用的是两个字符类:

/input[type=radio],input[type=checkbox] {/
# ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^

并且字符类一次只匹配一个字符(除非您附加 *+)。

将反斜杠加倍以使其超过双引号或改为使用单引号:

>> code_to_match_against = 'input\[type=radio\],input\[type=checkbox\] \{'
>> p code_to_match_against
"input\\[type=radio\\],input\\[type=checkbox\\] \\{"
>> puts code_to_match_against
input\[type=radio\],input\[type=checkbox\] \{

关于ruby - 如何使用变量通过正则表达式匹配这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12791547/

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