当前位置: 首页 > 知识库问答 >
问题:

由任意文本分隔的多个匹配

陆博易
2023-03-14

我正在尝试编写一个正则表达式,它将匹配由任意字符串分隔的同一个hashtag。所以

Lorem Ipsum#分子只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum“分子”一直是行业标准的虚拟文本,当时一家不知名的印刷商拿起一个打印盘,将其拼凑成一本“分子”样本书。它不仅存活了五个世纪,而且还跨越到电子排版,基本上保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的@Molecular Letraset表单的发布而流行,最近又随着Aldus PageMaker等桌面出版软件的发布而流行,包括Lorem Ipsum版本。

我该怎么做?这个正则表达式显然不起作用。

共有3个答案

武峻熙
2023-03-14
s="""
Lorem Ipsum #molecule is simply dummy text of the printing and typesetting industry.    Lorem Ipsum has #Molecule been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book ##Molecule. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of @Molecule Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
"""


print re.findall("@+molecule|#+molecule",s,re.IGNORECASE)
['#molecule', '#Molecule', '##Molecule', '@Molecule']
佘辰龙
2023-03-14

使用字符类来匹配这些字符中的任何一个。

>>> re.findall(r'[#@]+(?i)molecule', data)
['#molecule', '#Molecule', '##Molecule', '@Molecule']

注意:使用内联(?i)修饰符启用不区分大小写的匹配。

鄢朝斑
2023-03-14

您可以尝试([#@][Mm]分子)regex,无需转义#并在索引1处获得匹配的组。

下面是关于regex101的演示

输出:

MATCH 1
1.  [12-21]     `#molecule`
MATCH 2
1.  [101-110]   `#Molecule`
MATCH 3
1.  [265-275]   `##Molecule`
MATCH 4
1.  [450-459]   `@Molecule`

下面是直接来自regex101站点的带有ignore case的示例代码。

import re
p = re.compile(ur'([#@]+molecule)', re.IGNORECASE)
test_str = ...

re.findall(p, test_str)
 类似资料:
  • 我有以下模式: 在第一分隔符中,可以没有开始的圆括号、数字的组合和结束的圆括号。但是,数字和闭括号的组合是存在的,如果有开括号的话。 第二个分隔符从文本的第一列开始,它是该行唯一的单词。 我的正则表达式: 请帮帮我.

  • 问题内容: 我有以下测试文件: 解析此文件每一行并创建带有(名称,姓氏,生日)的对象的最佳方法是什么?当然,这只是一个示例,实际文件中有很多记录。 问题答案:

  • 我想验证由一些分隔符分隔的单词输入。本例中的分隔符是“|”符号,前后用空格分隔 到目前为止,我只听到了第一个单词,下面是rejex: 如何用空格和分隔符分隔单词或数字?PS仍在学习教程。任何帮助都将不胜感激 为了进一步澄清,我正在为上面的dojo dijit小部件寻找正则表达式,以正确验证输入。

  • 我有一个源代码,它读取文本文件并存储到一个元组类型的向量中: 包含以下数据: 因此数据由空格+垂直线+空格(多重分隔符)分隔。 如何更改源代码以处理多个分隔符? 注意:如果数据仅用空格隔开,则程序可以工作。

  • 问题内容: 我有一些看起来像这样的数据: 我想将其导入3列数据框,例如 我一直试图读取数据,因为2列在’:’上分割,然后在’‘上分割了第一列。但是我发现它令人讨厌。是否有更好的方法可以直接在导入时对其进行分类? 目前: 但是,由于我的数据处于领先地位,这使情况更加复杂。 我觉得这应该是一个简单的任务,但是目前我正在考虑逐行读取它,并在导入之前使用一些find replace清理数据。 问题答案:

  • 我正在寻找一个正则表达式,它可以做到这一点:我的文本: 我想提取的是: 有人有主意吗? 我试过: