gpt4 book ai didi

java - 正则表达式匹配非匹配组

转载 作者:行者123 更新时间:2023-11-30 02:04:38 26 4
gpt4 key购买 nike

我想匹配全名中的一些名称,全名是名称+某些信息,例如发布年份或作者。我想获取全名中的真实姓名。

[author1] Shuu [Digital]
[author1] Paradise ~★ Special Edition
(magazin) [kulmov_ (Kurowa)] Channel (Fate/Grand Order) [Chinese] [*'N]
(COMIC1☆7) [ComicCon] X-Men!! (Marvel)
(magazin) [Rave (Jacky)] SPLASH 11 (Microsoft)
[anotherauthor] name1 | name2 (Hatsujou Complex) [English]
[author7 (aurhot234)] Connect (Project) [Digital]
[author3] ~Hellverse~ (COMICcon 2017)
[author4] Escape [English] [Decensored]

我发现该名称几乎总是位于“]”或“)”之后。然后是一个空格,然后是名称。名称后面是一个空格,或者什么也没有,或者是“(”或“[”。该名称可以包含一些非 ASCII 吗?符号。全名可以包含日语符号。

我发现:

]\s+(.+)+\s*[\(|\[|\s]*

我不知道为什么,但它确实从“]”匹配到字符串的最末尾,包括空格。但正如我所见,它应该只匹配“]”之后的所有内容,获取真实名称,然后在找到“(”或“[”后停止。

我该如何解决这个问题?

最佳答案

我想你可能正在寻找这个正则表达式:

]\s+([^([\s]+(?:\s+[^([\s]+)*)

参见regex101.com用于演示。结果是:

Shuu
Paradise ~★ Special Edition
Channel
X-Men!!
SPLASH 11
name1 | name2
Connect
~Hellverse~
Escape

说明

]\s+             Match lead-in, i.e. end-bracket and some spaces
( Start capture group:
[^([\s]+ Match anything except '(', '[', and spaces
(?: Start optional repeating group:
\s+ Match one or more spaces
[^([\s]+ Match anything except '(', '[', and spaces
)* End of repeating group
) End of capture group

关于java - 正则表达式匹配非匹配组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51717015/

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