无忧启动论坛

标题: 正则表达式不会用,特来求助! [打印本页]

作者: zhxy9804    时间: 2018-5-22 06:44
标题: 正则表达式不会用,特来求助!
本帖最后由 zhxy9804 于 2018-5-22 06:51 编辑

是这样子的,我下载了一个chrome插件,是个网址跳转的,
想把网址 aaa.com/file-123456.html 跳转成aaa.com/id?=123456
123456是个可变部分

插件下载地址:https://chrome.google.com/websto ... gkklkocebdffgplmcle
或者我已经下载好了的: Redirector_v2.2.22.7.crx.7z (82.58 KB, 下载次数: 1)
这个插件是这样子的:





不会写了,特来求助!
为了表示谢意,能完成需求的,留下收款码,我给你发个10元小包,不成敬意!
作者: zhxy9804    时间: 2018-5-22 07:09


以上是别人做过的一个例子,可惜我完全看不懂
作者: wuyou    时间: 2018-5-22 08:11
如果是linux shell 对字符串 做正则替换,是用以下方式:
  1. [root@t6 ~]# echo 'aaa.com/file-123456.html'|sed 's/\(.+\/\)file-\(.+\)\.html/\1id\?=\2/'
  2. aaa.com/id?=123456
  3. [root@t6 ~]# echo 'aaa.com/file-abcd.html'|sed 's/\(.+\/\)file-\(.+\)\.html/\1id\?=\2/'
  4. aaa.com/id?=abcd
复制代码

作者: wuyou    时间: 2018-5-22 08:20
可以试试以下:

被替换式
  1. (.+\/)file-(.+)\.html
复制代码


替换式
  1. $1id\?=$2
复制代码

作者: wuyou    时间: 2018-5-22 08:26
如果 aaa.com/file- 是固定的,非变量,那试一下

被替换式
  1. aaa.com\/file-(.+)\.html
复制代码


替换式
  1. aaa.com\/id\?=$1
复制代码

作者: x9tian    时间: 2018-5-22 08:35
wuyou 发表于 2018-5-22 08:26
如果 aaa.com/file- 是固定的,非变量,那试一下

被替换式

就这样,不是元字符不应转义,/ 它不是元字符
作者: wuyou    时间: 2018-5-22 08:41
x9tian 发表于 2018-5-22 08:35
就这样,不是元字符不应转义,/ 它不是元字符

sed 里面使用/ ,要转义,所以我看到/ 都想转义。
其他地方使用,可能不用转义。
作者: zhxy9804    时间: 2018-5-22 08:43
wuyou 发表于 2018-5-22 08:26
如果 aaa.com/file- 是固定的,非变量,那试一下

被替换式

测试通过,已经给微信发了10元,遵守诺言!

再次感谢哈!
作者: wuyou    时间: 2018-5-22 08:45
zhxy9804 发表于 2018-5-22 08:43
测试通过,已经给微信发了10元,遵守诺言!

再次感谢哈!

呵呵,谢谢支持!
作者: zhxy9804    时间: 2018-5-22 08:46
再问一下 file-(.+)\.html 这个 .+是啥意思?
作者: wuyou    时间: 2018-5-22 08:51
. 代表任意字符, + 代表 1个以上(含1个), * 代表0个以上
() 是分组,用来提取 变量,第一个() 里面的值放在变量 $1(或\1),第二个() 里面的值放在变量 $2(或\2),依次类推。
作者: zhxy9804    时间: 2018-5-22 08:59
wuyou 发表于 2018-5-22 08:51
. 代表任意字符, + 代表 1个以上(含1个), * 代表0个以上
() 是分组,用来提取 变量,第一个() 里面的 ...

明白了,能给找个相关资料看看吗,系统了解一下!
作者: wuyou    时间: 2018-5-22 09:04
zhxy9804 发表于 2018-5-22 08:59
明白了,能给找个相关资料看看吗,系统了解一下!

给你一个简单的介绍 https://blog.csdn.net/okyoung188/article/details/53407021
有专门关于正则表达式的书,有一次我从图书馆抱回好几本书。
如果写php程序或linux shell 程序,很多地方用到正则表达式。
最近为解决discuzX 3.4 在mysql 8.0.11 上安装,用几行 正则表达式轻松解决。
作者: zhxy9804    时间: 2018-5-22 09:12
wuyou 发表于 2018-5-22 09:04
给你一个简单的介绍 https://blog.csdn.net/okyoung188/article/details/53407021
有专门关于正则表达式 ...

h哈哈,怪不得回答的如此熟练呢,!
作者: holley2008    时间: 2018-5-22 10:10
测试了下,大大5楼的 正则使用正常。

作者: wuyou    时间: 2018-5-22 10:46
holley2008 发表于 2018-5-22 10:10
测试了下,大大5楼的 正则使用正常。

可以试一下 对 / ? 不转义

被替换式
  1. aaa.com/file-(.+)\.html
复制代码


替换式
  1. aaa.com/id?=$1
复制代码

作者: holley2008    时间: 2018-5-22 11:30
wuyou 发表于 2018-5-22 10:46
可以试一下 对 / ? 不转义

被替换式

测试了下/ ? 不转义 效果一样。
转义符应该使用在有特殊效果的情况下
如替换为aaa.com/\nd?=$1 则转义符必需。
作者: pla66069    时间: 2018-5-22 14:51
不太懂,围观!
作者: 江南一根葱    时间: 2018-5-22 15:10
我正则表达式都用regex match tracer这个软件来测试的
作者: 邪恶海盗    时间: 2018-5-22 17:37
围观码农,表示一句都看不懂...
作者: wuyou    时间: 2018-5-22 19:59
holley2008 发表于 2018-5-22 11:30
测试了下/ ? 不转义 效果一样。
转义符应该使用在有特殊效果的情况下
如替换为aaa.com/\nd?=$1 则转义 ...


没错,实际应用中,可能会多了一些需要转义的字符。




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3