regex 连字符的条件连接符

gg0vcinb  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(87)

目前有两个正则表达式,我想合并成一个条件语法。连字符[\s]出现在一些文本字符串的开头,其他的是没有

Find:   ([A-Z0-9 #]+) \[([A-Za-z0-9 .]+)\]([\S])
Find:   - ([A-Z0-9 #]+) \[([A-Za-z0-9 .]+)\]([\S])

Replc:  [\L$1\E $2]
Replc:  - [\L$1\E $2]

Before:
-------
- MAN [on radio]: The signal is breaking up.

MAN #2 [on radio]: Stay on him.

Results I'm looking for:
-------------------------
- [man on radio] The signal is breaking up.

[man #2 on radio] Stay on him.

字符串
https://regex101.com/r/AybQOl/3
每天都在学习一点!!

ct3nt3jp

ct3nt3jp1#

既然这场比赛是不公开的,你所需要的就是

([A-Z0-9 #]+) \[([A-Za-z0-9 .]+)\]([\S])

字符串
替换:

[\L$1\E $2]


两个案子都能搞定。
如果比赛被取消,你可以用
查找:

^(- )?([A-Z0-9 #]+) \[([A-Za-z0-9 .]+)\]([\S])


替换:

$1[\L$2\E $3]

bqujaahr

bqujaahr2#

你可以使用?操作符在正则表达式中表示optional matches。如果你想在输出中保留它,你需要捕获一个可选的组。在你的例子中,匹配正则表达式将从

([A-Z0-9 #]+) \[([A-Za-z0-9 .]+)\]([\S])

字符串

(- )?([A-Z0-9 #]+) \[([A-Za-z0-9 .]+)\]([\S])


替换正则表达式将变为

$1[\L$2\E $3]

uxh89sit

uxh89sit3#

尝试以下 * 捕获模式 *。

(?m)^(- )?(.+?)\[(.+?]):

个字符
输出

- [man on radio] The signal is breaking up.

[man #2 on radio] Stay on him.

相关问题