由于历史原因,导致数据库里一些字符串前面被错误的添加了 n 个 FOO 标志,可能的情况如下:
FOO 尊敬的张先生,
FOO FOO 您好!
FOO FOO FOO ... 已经收到您的信件
每一个字符串开头,都有可能出现 n 个 FOO (也可能没有),怎么简单的处理,把字符串开头的 FOO 全部去除? (没有用 replace 和正则 re.sub()的原因,是字符中间部分的 FOO 不能去除)
1
crayygy 2019-09-19 20:02:25 +08:00 via iPhone 1
用正则,加上行开头就行了
|
2
andyholo 2019-09-19 20:05:47 +08:00 via Android
bar 在哪?
|
3
lishunan246 2019-09-19 20:10:44 +08:00 1
^(FOO )*(.*)$
|
4
Trim21 2019-09-19 20:19:06 +08:00 via Android 1
不喜欢用正则的话
while s.startswith ():s=s.replace (,,1 ) |
5
sunwei0325 2019-09-19 20:36:57 +08:00 1
|
6
miniyao OP |
10
miniyao OP @crayygy
@lishunan246 @Trim21 @sunwei0325 跑出来一个非常诡异的情况: >>> s = '[FOO][FOO][FOO]KO' >>> re.sub(r'^([\[FOO\]\s])*', '', s) 'KO' >>> s = '[FOO][FOO][FOO]OK' >>> re.sub(r'^([\[FOO\]\s])*', '', s) 'K' KO 和 OK 匹配出来的结果,KO 剩下了 ‘KO’,OK 怎么吧 O 给丢了,只有 K ? |
12
sunwei0325 2019-09-19 21:18:58 +08:00 1
|
13
jinliming2 2019-09-19 21:20:03 +08:00 via iPhone 1
@miniyao ^(\[FOO\]\s*|FOO\s*)+
|
14
miniyao OP |
15
lululau 2019-09-19 21:50:39 +08:00
update t set c = regex_substr(c, regex, substitution)
|
16
ysc3839 2019-09-19 22:05:59 +08:00 via Android
|
18
miniyao OP @noqwerty 试过的,里面的 [FOO] 个数不确定,[FOO] 后面可能还有空格,lstrip 可以剥,但搞不干净。
|
19
qwertyegg 2019-09-20 00:48:53 +08:00
先 replace("FOO", ""),然后 trim()
|