Regex 拉取字符串的第一个和最后一个字母

Regex to pull the first and last letter of a string

提问人:HEB 提问时间:6/15/2022 最后编辑:HEB 更新时间:6/15/2022 访问量:84

问:

我正在使用它来验证我的字符串。它可以从所述字符串中拉出数字序列,从而生成 02-01-1716,但是,我还需要拉出字符串开头和结尾的字母; Q:\Region01s\FY 02\02-01-1716 A.pdf 我需要 Q 和A,所以最后我会有 Q:02-01-1716A\d{2}-\d{2}-\d{4}

Python 正则表达 式字符串 序列

评论


答:

0赞 mozway 6/15/2022 #1

您可以尝试:

(.).*(.)\.[^\.]+$

或者通过验证:

(.).*\d{2}-\d{2}-\d{4}(.)\.[^\.]+$

评论

0赞 HEB 6/15/2022
这会导致输出 [('Q', 'A')],但是我需要类似于 Q: 02-01-1716A 的东西,我意识到我原来的问题不一定指定这一点,所以我编辑了它
0赞 mozway 6/15/2022
然后(.:).*(\d{2}-\d{2}-\d{4}.)\.[^\.]+$
1赞 Wiktor Stribiżew 6/15/2022 #2

你可以使用

import re
regex = r"^([a-zA-Z]:)\\(?:.*\\)?(\d{2}-\d{2}-\d{4}[a-zA-Z]?)"
text = r"Q:\Region01s\FY 02\02-01-1716A.pdf"
match = re.search(regex, text)
if match:
    print(f"{match.group(1)} {match.group(2)}")

# => Q: 02-01-1716A

请参阅 Python 演示。另请参阅正则表达式演示细节

  • ^- 字符串的开头
  • ([a-zA-Z]:)- 第 1 组:一封信和:
  • \\- 反斜杠
  • (?:.*\\)?- 除换行符以外的任何字符的可选序列,尽可能多地,后跟反斜杠
  • (\d{2}-\d{2}-\d{4}[a-zA-Z]?)- 第 2 组:两位数字、两位数字、四位数字、可选字母。--

输出(如果存在匹配项)是组 1、空格和组 2 值的串联。

评论

0赞 HEB 6/15/2022
我将如何编辑它以打开和阅读文本文档,而不是只读取一个特定的文本行但仍获得相同的输出?
1赞 Wiktor Stribiżew 6/15/2022
@HEB像这样