私信  •  关注

FailSafe

FailSafe 最近创建的主题
FailSafe 最近回复了

小宝贝,这是非常具体的部分,因为你真的只提供了一个例子,所以我不确定什么样的标签会来,所以你有两个选择。

确实,regex通常不是html的最佳选择,但我确实希望这能有所帮助。美化组或lxml可能最终会更好。

如果格式相对一致,使用re.sub(对于Python3)可以使用distance,所以这里我要说的是替换任何不以 < 如果前面有7个或更多空格

>>> import re



>>> string = '''<p class="se_textarea">
        <span>
            <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
            nnnnnnn
            <br>
        </span>
        <span>
            <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
           <br>
        </span>
        </p>'''



>>> print(re.sub('(?m)\n[\ ]{7,}(?!<)[\S]+(?=\n|$)', '', string))


    #OUTPUT
    <p class="se_textarea">
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
        <br>
    </span>
    </p>

.

或者可以使用特定的regex并在必要时替换标记名

>>> import re



>>> string = '''<p class="se_textarea">
        <span>
            <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
            nnnnnnn
            <br>
        </span>
        <span>
            <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
           <br>
        </span>
        </p>'''



>>> print(re.sub(r'(<span>[\S\s]*?<[\S\s]*?>[\S\ ]*?</[\S\s]*?>[\s]*?)([\S\s]*?)(\n[\ ]+<)', r'\1\3', string))


    #OUTPUT
    <p class="se_textarea">
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
        <br>
    </span>
    </p>
5 年前
回复了 FailSafe 创建的主题 » 在python中,在匹配字符串的特定模式之后获取数字

确实需要有一些东西可以让不到50+代表点的用户发表评论,因为这个线程是我非常好奇的,我想放弃,但不想给出一个完整的答案,因为我给出的答案涉及有限的情况,而不是存在。

@威克托斯特里比奥

您的解决方案错过了基于您的演示的输出的“ref.”部分。看来他想跳过“电车”

@将死

在您想要的输出中,您需要编辑它,因为“uv1234”不会出现在您发布的字符串中的任何位置

.

不管怎样,我找到了一个解决办法,但我真的希望有人能在这方面有所改进。

>>> import re

>>> string = '''some text before Expedien: 1-21-212-16-26 some random text
Reference RE9833 of all sentences.
abc
123
456
something blah blah Ref.: 
tramite  1234567
Ref.:
some junk Expedien N° 18-00777 # some new content
some text Expedien N°18-0022995 # some garbled content'''

>>> re.findall('(?:(Expedien[\s]+N\S|Ref\.(?!:[\S\s]{,11}Expedien)|Reference|Expedien))[\S\s]*?([A-Z\-]*(?:[\d]+)[\S]*)', string)

[('Expedien', '1-21-212-16-26'), ('Reference', 'RE9833'), ('Ref.', '1234567'), ('Expedien N\xb0', '18-00777'), ('Expedien N\xb0', '18-0022995')]

缺点:

  • 要正确捕捉,它部分依赖于“ref.(?!:[\s\s]{,11}权宜之计“
  • 首先,需要对“11”进行编辑,以考虑可能存在的其他长度的信息,因此它不灵活
  • 其次,如果它后面跟“reference”相反,那么第三个“ref”将被错误地捕获
5 年前
回复了 FailSafe 创建的主题 » python正则表达式-提取浮点模式

编辑-hmmm…如果它必须跟随 soles 希望这能帮上忙

试试这些,我的控制台不能接受额外的字符,但基于您的输入:

>>> my_string = """03/14/2019 07:07 AM
Soles in mDm : 2864.35
BTC purchase in mdm: 11,202,782.0
Soles in mDm : 2864.35
soles MDM: 2,864.35
Soles in mdm :2,864.355
"""


>>> re.findall('(?i)soles[\S\s]*?([\d]+[\d,]*\.[\d]+)', my_string)

#Output
['2864.35', '2864.35', '2,864.35', '2,864.355']



>>> re.findall('[S|s]oles[\S\s]*?([\d]+[\d,]*\.[\d]+)', my_string)

#Output
['2864.35', '2864.35', '2,864.35', '2,864.355']
5 年前
回复了 FailSafe 创建的主题 » 电子邮件提取以不需要的字符开始和结束(python)

因为我没有您的原始文本,所以我将使用您示例中的字符串。

看看下面的两个正则表达式是否适合您。我还包括第三个更精确的。

'(?<=\dU)[\w]+@[\w\.]+?(?=U|\s|$)'

.

'(?<=\dU)[\w]+@[\w]+\.[\w]+?(?=U|\s|$)'

.

示例测试

>>> import re


>>> string = '''3465Usjohnson@astate.eduUProvost instead of sjohnson@astate.edu The surround text that it is being extracted from: 870-972-3465Usjohnson@astate.eduUProvost and Vice ChancellorDr. Lynita Cooksey870-972-2 030 870-972-2036Ulcooksey@astate.edu'''


>>> re.findall('(?<=\dU)[\w]+@[\w\.]+?(?=U|\s|$)', string)

#Output
['sjohnson@astate.edu', 'sjohnson@astate.edu', 'lcooksey@astate.edu']




>>> re.findall('(?<=\dU)[\w]+@[\w]+\.[\w]+?(?=U|\s|$)', string)

#Output
['sjohnson@astate.edu', 'sjohnson@astate.edu', 'lcooksey@astate.edu']

.

更准确一点,因为电子邮件都以 .edu

'(?<=\dU)[\w]+@[\w]*\.edu(?=U|\s|$)'

.

示例测试

>>> string = '''3465Usjohnson@astate.eduUProvost instead of sjohnson@astate.edu The surround text that it is being extracted from: 870-972-3465Usjohnson@astate.eduUProvost and Vice ChancellorDr. Lynita Cooksey870-972-2 030 870-972-2036Ulcooksey@astate.edu'''


>>> re.findall('(?<=\dU)[\w]+@[\w]*\.edu(?=U|\s|$)', string)

#Output
['sjohnson@astate.edu', 'sjohnson@astate.edu', 'lcooksey@astate.edu']