Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 正则表达式替换十六进制字符_Regex - Fatal编程技术网

Regex 正则表达式替换十六进制字符

Regex 正则表达式替换十六进制字符,regex,Regex,我是regex新手,无法创建表达式来解决我的问题 我有一个字符串,如/abc/def%20hi%28hello%29test。我想用-替换十六进制字符,即%20、%28和%29 我知道这三个词都有不同的含义,但我可以用任何单个字符来替换它们,我的意思是-甚至或“”(空格) 因此,我想将输出作为/abc/def hi hello test 我想找到%并将%[a-zA-Z0-9][a-zA-Z0-9]中的三个字符替换为-,但不起作用 有人能帮我写一个只替换十六进制字符的正则表达式吗?搜索: %[a-

我是regex新手,无法创建表达式来解决我的问题

我有一个字符串,如
/abc/def%20hi%28hello%29test
。我想用
-
替换十六进制字符,即
%20
%28
%29

我知道这三个词都有不同的含义,但我可以用任何单个字符来替换它们,我的意思是
-
甚至
或“”(空格)

因此,我想将输出作为
/abc/def hi hello test

我想找到
%
并将
%[a-zA-Z0-9][a-zA-Z0-9]
中的三个字符替换为
-
,但不起作用

有人能帮我写一个只替换十六进制字符的正则表达式吗?

搜索:

%[a-fA-F0-9][a-fA-F0-9]
替换为:

-
示例:

搜索:

%[a-fA-F0-9][a-fA-F0-9]
替换为:

-
示例:

听起来你真正想做的是解码URL编码,我敢打赌你的宿主语言有一个内置的功能。在PHP中,这就是

解码URL后,您可以更轻松地修改您想要修改的内容。

听起来您真正想要做的是解码URL编码,我敢打赌您的宿主语言有一个内置的功能。在PHP中,这就是


解码URL后,您可以更轻松地修改要修改的内容。

您说“不工作”是什么意思?以你的例子来说,它给出了什么输出?我们需要以更具体的方式知道-你是在程序中编写的吗?或者你想在文本编辑器的搜索和替换对话中使用它?正则表达式不是语言独立的-你应该考虑写一个这样我们可以更好地诊断你的问题。你的正则表达式看起来很好(除了包含代码> G-Z ,这是你不可能注意到的,因为你刚才说它“不起作用”,这是不够具体的)。请使用您选择的语言/工具构建一个测试用例,该测试用例应包含一个不起作用的易于复制的测试用例。我认为OP需要全局标志
g
(或等效标志)。您可能需要将其复杂化一点才能100%正确-我想
%%28
不应该变成
%(
,因为
%%
是一个转义的
%%
。你说它“不起作用”是什么意思使用你的例子,它给出了什么输出?我们需要以更具体的方式知道,你是在程序中写这个吗?还是在文本编辑器的搜索和替换对话框中使用这个?正则表达式不是语言无关的-你应该考虑写一个这样我们可以更好地诊断你的问题。你的正则表达式看起来很好。(除了包括
G-Z
,你不太可能注意到,因为你只是说它“不起作用”,这确实不够具体)。请使用您选择的语言/工具构建一个测试用例,其中应包括一个不起作用的易于复制的测试用例。我的印象是OP需要全局标志
g
(或同等标志)。您可能需要将其复杂化一点才能100%正确-我想
%%28
不应该变成
%(
,因为
%
是一个转义的
%
。使其更短
(?i)%[a-f0-9]{2}
:)我不认为正则表达式是OP遇到的真正问题,因为他的例子实际上是匹配的。我相信这是他遇到问题的替换…如果不知道他正在使用的语言,我们就无法真正帮助他。@HamZa,或者更简短地说,用
\d
@HamZa替换
0-9
,这取决于正则表达式引擎。@Dukel很好地使用印度教、阿拉伯语或希伯来语数字。将其缩短为
(?i)%[a-f0-9]{2}
:)我不认为正则表达式是OP遇到的真正问题,因为他的例子实际上是匹配的。我相信这是他遇到问题的替换…如果不知道他正在使用的语言,我们就无法真正帮助他。@HamZa,或者更简短地说,用
\d
@HamZa替换
0-9
,这取决于正则表达式引擎。@Dukeling井
\d
印度教、阿拉伯语或希伯来语数字。