用于替换复杂字符串的RegEx [重复]

pobjuy32  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(95)
    • 此问题在此处已有答案**:

(9个答案)
昨天关门了。
如何用1转来替换复杂的字符串?
输入模式:

prefix_REDUNDANCY1[_REDUNDANCY2]_OK1[_OK2](REDUNDANCY3).abc

输出模式:

prefix_OK1[_OK2].xyz

例如:输入:

This is_VERY_Cold(abc_def).ext1
This is_VERY_Cool(ghi_jkl).ext1
This is_A_BIG_Hot(mno_pqr).ext1
This is_The_SMALL_Luck_Chance(stu_vwx).ext1
...

输出:

This is_Cold.ext2
This is_Cool.ext2
This is_Hot.ext2
This is_Luck_Chance.ext2
...

先谢谢你
=========================我尝试使用查找内容:

(.*)(_VERY|_A|_The|_BIG|_SMALL)(.*)(\([^()]*\)).*

替换为:

$1$3.ext2

=〉但是,结果不够好

This is_Cold.ext2
This is_Cool.ext2
This is_A_Hot.ext2
This is_The_Luck_Chance.ext2

==========================

qv7cva1a

qv7cva1a1#

使第一个.*.*?(0+的次数尽可能少)和第二个捕获组具有+
(.*?)(_VERY|_A|_The|_BIG|_SMALL)+(.*)(\([^()]*\)).*
https://regex101.com/r/cHmTQv/1
不知道其他输入的细节,但假设第一组转到first _,中间组(2)应该在一个全大写单词之后停止,另一个正则表达式稍短:
([^_]*)(_.+[A-Z]+)(_.*)(\([^)]*\)).*

相关问题