
匹配字符串: <sometag>一些任意不定长的文字,但不包括 AT 符号和小于号</sometag>
一步将其替换为: <sometag>一 @些 @任 @意 @不 @定 @长 @的 @文 @字 @,@但 @不 @包 @括 @A@T@符 @号 @和 @小 @于 @号</sometag>
也就是在 tag 内部的任意两个字符之间插入 @ 。
我想了下应该是做不到的,请大家帮确认下。
1 thedog 2018 年 8 月 3 日 via Android 当成一个列表,join 一下?不明白为什么要用正则 |
2 jayx 2018 年 8 月 3 日 python 零宽断言匹配,然后 join()方法插入 |
3 CEBBCAT 2018 年 8 月 3 日 正则把 sometag 匹配出来,别的事交给我 C 来做 |
4 dreasky 2018 年 8 月 3 日 re.sub(r'(.)', r'@\1', r'一些任意不定长的文字,但不包括 AT 符号和小于号') '@一 @些 @任 @意 @不 @定 @长 @的 @文 @字 @,@但 @不 @包 @括 @ @A@T@ @符 @号 @和 @小 @于 @号' 中文需要 python3,剩下的问题很简单 |
5 rabbbit 2018 年 8 月 3 日 硬写成一行倒是可以 js text = '<sometag>一些任意不定长的文字,但不包括 AT 符号和小于号</sometag>'; text.replace(/(?<=<sometag>)(.*)(?=<\/sometag>)/, (str) => {return str.split('').filter(function(i) { return i.trim() !== '' ? true: false}).join('@')}); // "<sometag>一 @些 @任 @意 @不 @定 @长 @的 @文 @字 @,@但 @不 @包 @括 @A@T@符 @号 @和 @小 @于 @号</sometag>" |
6 rabbbit 2018 年 8 月 3 日 更正 text.replace(/(?<=<sometag>)(.*)(?=<\/sometag>)/, (str) => {return str.split('').filter((i) => { return i.trim() !== ''}).join('@')}); |
8 ragnaroks 2018 年 8 月 3 日 有个文本处理问题,他想到用正则来解决,现在他有两个问题了 |
10 ragnaroks 2018 年 8 月 3 日 如果是每个字符后加 at 的话,我的想法是创建个 2 倍字符数的数组,遍历进去.. |
13 yyfearth 2018 年 8 月 3 日 @helloiac 正则一次找不到 但是两次应该可以做到 先把 tag 里面的内容抓出来 然后替换里面的内容 每个字后面中间加 at (除了第一个字 每个字去买加 或者 除了最后一个 每个后面加) @rabbbit 都用上 箭头了 为啥还要用 return 另外可以不用 filter text.replace(/(?<=<sometag>)(.*)(?=<\/sometag>)/, str => str.split(/\s*/).join('@')) 另外这个用到了最新的 ES RegExg 的功能 "?<=" 其实不用也可以 text.replace(/(<sometag>)(.*)(?=<\/sometag>)/, (a, b, str) => b + str.split(/\s*/).join('@')) |
14 JmmBite 2018 年 8 月 3 日 |
15 FanWall 2018 年 8 月 3 日 via Android 正则很容易做到,但如果不支持环视就无法一句搞定。 |
16 helloiac OP |
18 goofool 2018 年 8 月 3 日 瞎写 sed """ /<.*>/{h; s/\(<[^\/]*>\).*/\1/p;g;s/<.*>\(.*\)<\/.*>/\1/;s/\(.\)/\1@/g; s/@$//p;g;s/.*\(<\/.*>\)/\1/p;d;}; p """ test.txt |