How to perform string separations using regex as a reference and that a part of the used separator pattern is not removed from the following string?

huangapple go评论66阅读模式
英文:

How to perform string separations using regex as a reference and that a part of the used separator pattern is not removed from the following string?

问题

这是你需要的翻译结果,只包括代码部分:

import re

sentences_list = [
    "El coche ((VERB) es) rojo, la bicicleta ((VERB)está) allí; el monopatín ((VERB)ha sido pintado) de color rojo, y el camión también ((VERB)funciona) con cargas pesadas",
    "El árbol ((VERB es)) grande, las hojas ((VERB)son) doradas y ((VERB)son) secas, los juegos del parque ((VERB)estan) algo oxidados y ((VERB)es) peligroso subirse a ellos"
]

aux_list = []
for i_input_text in sentences_list:

    separator_symbols = r'(?:(?:,|;|\.|)\s*y\s+|,\s*|;\s*)'  # 分隔符正则表达式
    
    pattern = r"\(\(VERB\)\s*\w+(?:\s+\w+)*\)"  # 查找模式的正则表达式
    
    # 使用分隔符将文本拆分为短语
    frases = re.split(separator_symbols, i_input_text)
    
    aux_frases_list = []
    # 在每个分离的短语中查找模式
    for i_frase in frases:
        verbos = re.findall(pattern, i_frase)
        if verbos:
            aux_frases_list.append(i_frase)
    aux_list = aux_list + aux_frases_list
    
sentences_list = aux_list
print(sentences_list)

希望这对你有所帮助。如果你有其他问题,请随时提出。

英文:
import re

sentences_list = ["El coche ((VERB) es) rojo, la bicicleta ((VERB)está) allí; el monopatín ((VERB)ha sido pintado) de color rojo, y el camión también ((VERB)funciona) con cargas pesadas", "El árbol ((VERB es)) grande, las hojas ((VERB)son) doradas y ((VERB)son) secas, los juegos del parque ((VERB)estan) algo oxidados y ((VERB)es) peligroso subirse a ellos"]

aux_list = []
for i_input_text in sentences_list:

    #separator_symbols = r'(?:(?:,|;|\.|\s+)\s*y\s+|,\s*|;\s*)'
    separator_symbols = r'(?:(?:,|;|\.|)\s*y\s+|,\s*|;\s*)(?:[A-Z]|l[oa]s|la|[eé]l)'
    
    pattern = r"\(\(VERB\)\s*\w+(?:\s+\w+)*\)"
    
    # Separar la frase usando separator_symbols
    frases = re.split(separator_symbols, i_input_text)
    
    aux_frases_list = []
    # Buscar el patrón en cada frase separada
    for i_frase in frases:
        verbos = re.findall(pattern, i_frase)
        if verbos:
            #print(f"Frase: {i_frase}")
            #print(f"Verbos encontrados: {verbos}")
            aux_frases_list.append(i_frase)
    aux_list = aux_list + aux_frases_list
    
sentences_list = aux_list
print(sentences_list)

How to make these separations without what is identified by (?:[A-Z]|l[oa]s|la|[eé]l) be removed from the following string after the split?

Using this code I am getting this wrong output:

['El coche ((VERB) es) rojo', ' bicicleta ((VERB)está) allí', ' monopatín ((VERB)ha sido pintado) de color rojo', ' camión también ((VERB)funciona) con cargas pesadas', ' hojas ((VERB)son) doradas y ((VERB)son) secas', ' juegos del parque ((VERB)estan) algo oxidados y ((VERB)es) peligroso subirse a ellos']

It is curious that the sentence "El árbol ((VERB es)) grande" directly dasappeared from the final list, although it should be

Instead you should get this list of strings:

["El coche ((VERB) es) rojo", "la bicicleta ((VERB)está) allí", "el monopatín ((VERB)ha sido pintado) de color rojo", "el camión también ((VERB)funciona) con cargas pesadas", "El árbol ((VERB es)) grande", "las hojas ((VERB)son) doradas y ((VERB)son) secas", "los juegos del parque ((VERB)estan) algo oxidados y ((VERB)es) peligroso subirse a ellos"]

答案1

得分: 1

I'm taking a guess the splitter regex should be this:

(?:[,.;]?\s*y\s+|[,;]\s*)(?=[A-Z]|l(?:[ao]s|a)|[eé]l)

https://regex101.com/r/jpWfvq/1

(?: [,.;]? \s* y \s+ | [,;] \s* ) # consumed
(?= # not consumed
[A-Z]
| l
(?: [ao] s | a )
| [eé] l
)

which splits on punctuation and y (ands, optional) at the boundaries
while maintaining a forward-looking group of qualifying text without consuming them. And trimming leading whitespace as a bonus.

英文:

I'm taking a guess the splitter regex should be this:

(?:[,.;]?\s*y\s+|[,;]\s*)(?=[A-Z]|l(?:[ao]s|a)|[eé]l)

https://regex101.com/r/jpWfvq/1

 (?: [,.;]? \s* y \s+ | [,;] \s* )   # consumed
 (?=                                 # not consumed
    [A-Z] 
  | l
    (?: [ao] s | a )
  | [eé] l
 )

which splits on punctuation and y (ands, optional) at the boundarys
while maintaining a forward looking group of qualifying text without consuming them. And trimming leading whitespace as a bonus.

huangapple
  • 本文由 发表于 2023年2月14日 05:13:36
  • 转载请务必保留本文链接:https://go.coder-hub.com/75441242.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定