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