我想编写一个正则表达式,它只在字符串以\n开头、至少以一个大写字母继续并以\n结尾时才匹配该字符串。该字符串可以包含此模式的重复,例如:
\n[A-Z]\n[A-Z]\n
我在这个输入上尝试了以下正则表达式:\n(([A-Z]+\n)+):
200LA 012F5421F2E8A172 164 XRAY 1.950 0.176 NA no Endolysin [Enterobacteria phage T4] ||1C63A 1C64A 1C65A MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKSELDKAIGRNTNGVITKDEAEKLFNQDVDAAVRGILR NAKLKPVYDSLDAVRRAALINMVFQMGETGVAGFTNSLRMAQQKRWDEAAVNLAKSRWYNQTPNRAKRVITTFRTGTWDA YKNL
我希望得到这样的结果: ('mnifemlridegrlkiykdtegytigighlltltkspslnaakseldkaigrngtngvitkdeaeklfnqdvdaavrgrirnakpkpvydsldavrralinmvfqmgetgvagftnslrmaqkrwdeaavnlaksrwynqtpnrakrvittfrtgtwdayknl')
但是我得到了这个: ('mnifemlridegrlkiykdtegytigighllltkspslnaakseldkaigrnngvitkdeaeklfnqdvdaavrgillr\nnaklkpvydsldavrraalinmvqqmgetgvagftnslrmaqkrwdeaavnlaksrwynqtpnrakrvittfrtgtwda\nYKNL\n','YKNL\n')
有人知道哪里出了问题吗?你知道吗
谢谢!你知道吗
您的正则表达式匹配与您的条件匹配的第一节(可能的最长版本)。你知道吗
文本中的第一行不是以
\n
开头的,因此它会移动到第一行\n
之后的行,因为它与条件匹配,所以regex指定的组会被接受。你知道吗对于您的结果,我建议使用
\n(?:[A-Z]+\n)+
(?:
表示非捕获组,以防止捕获最后一个组以外的组),然后用空字符串替换换行符:相关问题 更多 >
编程相关推荐