【发布时间】:2019-02-04 13:55:32
【问题描述】:
输入字符串:
-line[8qWWQ5-swd-WER-DWDS]]<-SUCCESS#[14][MY_SAMPLE_TEST]
-line[8qWWQ5-swd-WER-DWDS]]<-SUCCESS#[4][MY_SAMPLE_TEST2]
-line[8qWWQ5-swd-WER-DWDS]]<Failed#[17][[14]SERVERERROR(TYPE-241)
预期输出:
MY_SAMPLE_TEST
MY_SAMPLE_TEST2
SERVERERROR
我的正则表达式:(?<=#).*
上面的正则表达式我可以得到 # 之后的所有内容,我也试过了:
rex = (?<=#\[...\[).*(?=])
这给了我第一行的正确输出,即:MY_SAMPLE_TEST 但由于第 2 行只有一位数字,即 4,所以它不匹配,与第 3 行类似的问题
是否可以编写一个可以给出预期输出的表达式? , 任何帮助都会很棒
【问题讨论】:
-
尝试
#[^a-zA-Z]*(\w+)然后迭代第一个捕获组的值。在此处查看现场演示regex101.com/r/kSBxMM/1 -
在最后一个示例字符串中的
[17]和[14]之间有一个额外的[。是不是打错字了? -
@Gurman :不,那不是类型,
-
@revo 谢谢,快速回答,但如果 mt 匹配字符中有空格,即 MY_SAMPLE_TEST 也可以是 MY SAMPLE TEST
-
然后使用
#[^a-zA-Z]*([^][()]*)。在此处查看现场演示regex101.com/r/kSBxMM/2
标签: regex python-3.x