正则表达式,匹配特定字符之间的内容
目标字符是:<actionId>20433451</actionId>需要获得的结果是:20433451
我一直无法掌握正则表达式,虽然很简单,但我尝试利用某度搜到的例子来套改,但还是无法实现我的需求。
小白,请各位大佬指教,感谢。 (?<=<actionId>)\d+(?=</actionId>) JS:
"<actionId>20433451</actionId>".replace(/\D/g, '') 中间如果不全是数字的话把\d+ 换成.*?
https://img01-xusong.91q.com/A327449C-9267-4491-977C-4E98FFB20AF6.jpg 本帖最后由 paypojie 于 2022-11-2 19:02 编辑
python代码
# <actionId>20433451</actionId>
import re
r = re.compile(r'\d+')
# r =re.compile(r'+') # 这行代码可以替换上一行代码 一样的效果
m = r.search('<actionId>20433451</actionId>')
print(m.group()) 如果匹配中间的你可以写【/<a.*?d>(.*?)</】; 【<a.*?d>】的意思时匹配【<ad> <a1d> <aaad>】之类的,然后后面【>(.*?)<】表示匹配满足前面条件的字符串 用环视。有的叫什么断言。(?>=)(?=) 这个与使用的应用有关,并且相互间不一定兼容。如用awk,则可把<actionId>20433451</actionId>保存为1.txt,如下方式可提取,并且单awk都还可以更多:
D:\test>awk "{print gensub(/^<.+>(.+)<.+>$/,\"\\1\",\"g\")}" 1.txt
20433451
D:\test>awk -F"[<>]+" "{print $3}" 1.txt
20433451 sed 's/<actionld>(.*)<\/actionld>/\1/'
页:
[1]