当前位置: 首页 > 面试题库 >

Python正则表达式拆分不带空字符串

谭昊乾
2023-03-14
问题内容

我有以下显示这种格式的文件名:

000014_L_20111007T084734-20111008T023142.txt
000014_U_20111007T084734-20111008T023142.txt
...

我想提取第二个下划线之后'_'和之前的中间两个时间戳部分'.txt'。因此,我使用了以下Python正则表达式字符串拆分:

time_info = re.split('^[0-9]+_[LU]_|-|\.txt$', f)

但这在返回的列表中给了我两个额外的空字符串

time_info=['', '20111007T084734', '20111008T023142', '']

如何仅获取两个时间戳信息?即我想要:

time_info=['20111007T084734', '20111008T023142']

问题答案:

不要使用re.split(),使用groups()正则表达式Match/SRE_Match对象的方法。

>>> f = '000014_L_20111007T084734-20111008T023142.txt'
>>> time_info = re.search(r'[LU]_(\w+)-(\w+)\.', f).groups()
>>> time_info
('20111007T084734', '20111008T023142')

您甚至可以命名捕获组并在字典中检索它们,尽管您使用的groupdict()不是groups()。(这种情况下的regex模式将类似于r'[LU]_(?P<groupA>\w+)-(?P<groupB>\w+)\.'



 类似资料:
  • 问题内容: 如果我有一个类似“ 11E12C108N”的字符串,该字符串是字母组和数字组的串联,那么如何在没有分隔符的情况下拆分它们? 例如,我希望得到的拆分为: 我现在有这个。 这给了我: 我可以一次完成原始正则表达式的完全分割吗?不必在中间令牌上再次运行正则表达式? 问题答案: 使用以下正则表达式,并获取所有匹配项的列表。那就是您要寻找的。 在Java中,我认为代码如下所示:

  • 问题内容: 使用该模块,似乎无法拆分为空字符串的模式匹配: 换句话说,即使找到匹配项,即使它是空字符串,也无法拆分该字符串。 的文档似乎支持我的结果。 对于这种特殊情况,很容易找到“解决方法”: 但这是一种容易出错的方法,因为这样我就必须提防已经包含要分割的子字符串的字符串: 有没有更好的方法可以拆分与模块的空模式匹配?另外,为什么不允许我首先这样做呢?我知道使用正则表达式的其他拆分算法是可行的。

  • 问题内容: 我有一个字符串,需要根据出现的“,”(逗号)进行拆分,但是需要忽略在一对括号内出现的任何字符串。例如, 应拆分为 问题答案: 对于非嵌套 嵌套 (括号内的括号)

  • 我有一个表格形式的命令输出。我正在解析结果文件的输出并将其存储在字符串中。一行中的每个元素由一个或多个空格字符分隔,因此我使用正则表达式匹配1个或多个空格并拆分它。但是,在每个元素之间插入一个空格: 还有更好的方法吗? 每次拆分后,str2都会附加到列表中。

  • 我试图匹配正则表达式模式来替换特定字符串。 示例文本:ABC/1111111 031111111/0318*12345678 我想用“/1222”替换03和18 in/0318,即(2022年12月)。我尝试了string replaceAll方法,但它替换了提供的示例字符串中所有匹配的字符。比如下面; 我尝试过的示例代码: 样本文本。替换(匹配器组(2),“12”); 样本文本。替换(匹配器组(

  • 字符串示例: 比方说,我想用<代码>来分割这个句子 字符(如果不在<代码> 我一直在使用: 如果不在<代码>