在左右边界内搜索短语

牛扒

明白我的意思会更好。

以下是我正在解析的数据集中的一些选择:

1. [Hiroyuki]多用途洋葱,葱和记忆。同时吞噬了格里门根的金发2020/12/18 V23

2. [Hiroyuki]新鲜度很重要。2019/02/11吞下节日

3. [Hiroyuki]让我们回答问什么。柴郡巧克力波特喝。

4. [Hiroyuki]您没有早起,这对您有害。.. 吞咽Lagunitas IPA时2019/04/14 D23

我试图抢劫那个名字。1是“格林伯格金发女郎”,2是“獭祭”,3是“柴郡巧克力波特”,4是“ Lagunitas IPA”

我尝试使用以下模式:

pattern = re.compile('(?<=[\?。!]).*(?=を[飲呑])')

我发现饮料总是紧跟着/我还看到,喝酒总是在之后

如何才能做到这一点?

齐奥诺

[EDIT]
请尝试以下方法:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import re
import sys, codecs

sys.stdout = codecs.getwriter('utf_8')(sys.stdout)

str = u"""
1.【ひろゆき】万能ねぎとわけぎと記憶力。Grimbergen blondeを呑みながら。2020/12/18 V23

2.【ひろゆき】日本酒は鮮度が大事ですよ。 獺祭を呑みながら 2019/02/11

3.【ひろゆき】聞かれたことに答えてみようの回。Cheshire Chocolate Porter飲みつつ。

4.【ひろゆき】早起きは得しないし、体に悪いよね。。Lagunitas IPAを呑みながら 2019/04/14 D23
5.【ひろゆき】冬将軍強くね?温暖化どこいったの? PARISIS NOËLを呑みつつ 2019/01/26
6.【ひろゆき】運のいい人っているよね。科学的根拠ないけど。。LA VIRGEN MADRID LAGERを呑みながら  2020/01/16 J08
"""

m = re.finditer(ur'.*[。?]+\s?(.*?)を?[呑飲]', str)
for i in m:
    print(i.group(1))

结果:

Grimbergen blonde
獺祭
Cheshire Chocolate Porter
Lagunitas IPA
PARISIS NOËL
LA VIRGEN MADRID LAGER

正则表达式的说明'.*[。?]+\s?(.*?)を?[呑飲]'

  • 第一个.*匹配尽可能长,然后回溯以尝试以下正则表达式匹配。
  • [。?]+ 匹配一个或多个日文句号或问号的序列。
  • \s?匹配空白字符(如果有)。它删除饮料名称前的前导空白。
  • ?(.*?)使最短(非贪婪)匹配,并且捕获组被分配给匹配的子。
  • を? 如果考虑到情况,则在Japasene中有时会省略后置词“を”,从而匹配字符“を”。
  • [呑飲] 匹配作为汉字变体的任何字符,即“喝酒”。

在上.*一篇文章中,领先者丢失了,并允许进行过多比赛。现在,正则表达式会尽可能地增加指针的数量,然后从右向左回溯。这就是为什么现在删除了不必要的子字符串的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章