gpt4 book ai didi

python - 正则表达式匹配两个单词之间的多行文本,包括单词

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:42 24 4
gpt4 key购买 nike

我正在编辑字典并尝试将每个发音标签 [s]...[/s] 放在转录标签 [c darkslategray]...[/c 之后]。问题是并非所有单词都包含发音和转录。

这是我当前的正则表达式和字典的一部分:

(\s\[s\].*?\[\/s\])
(?s)(\s.*?\[c darkslategray\].*?\[\/c\])

然后替换为 $2$1 以移动标签。

contrast
[s]contra62.wav[/s]
[b]con·trast[/b]
[c blue][b]I[/b][/c]
[m1]({{<vr>}}[p]or[/p] [b]A[/b]{{</vr>}})[c darkslategray]/kənˈtræst, [i]Brit[/i] kənˈtrɑːst/[/c] [p]verb[/p]
[m2][b]1[/b] \[[p]no obj[/p]\] [b]:[/b] to be different especially in a way that is very obvious[/m]
repellency
[s]repell01.wav[/s]
[m1][b]re·pel·len·cy[/b] [c darkslategray]/rıˈpɛlənsi/[/c] [p]noun[/p] \[[p]noncount[/p]\][/m]
[m2][*][ex]a fabric known for its water [i]repellency[/i][/ex][/*][/m]
labyrinth
[s]labyri01.wav[/s]
charge card
[m1][p]noun[/p], [p]pl[/p] [b]⋯ cards[/b] \[[p]count[/p]\]
[m2][b]:[/b] ↑<<credit card>>[/m]
Antarctic
[s]gganta10.wav[/s]
↑<<antarctic>>
ant
[s]ant00001.wav[/s]
[m1][c darkslategray]/ˈænt/[/c] [p]noun[/p], [p]pl[/p] [b]ants[/b] \[[p]count[/p]\]
[m2][b]:[/b] a kind of small insect that lives in an organized social group[/m]
[m3][*][ex]a colony of [i]ants[/i] = an [i]ant[/i] colony[/ex][/*][/m]
ring
[s]ring0004.wav[/s]

Regex101 示例:https://regex101.com/r/cG3yK3/5

如您所见,前两个匹配项很好,但第三个匹配项不是我要找的。它捕捉一个词的发音和另一个词的转录。有什么办法可以解决吗?

最佳答案

你的正则表达式应该有一个否定的前瞻性来确保没有嵌套的 [s]...[/s] 被匹配。使用这个正则表达式:

(\s\[s\].*?\[\/s\])
(?s)(\s(?:(?!\[s\].*?\[\/s\]).)*?\[c darkslategray\].*?\[\/c\])

Updated RegEx Demo

关于python - 正则表达式匹配两个单词之间的多行文本,包括单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com