1
.+(?<![a-z]\s)([A-Z](?=[a-z'-]+)[a-z'-]+)(?!\s).+\((.+)\).+(?<![a-z]\s)([A-Z](?=[a-z'-]+)[a-z'-]+)(?!\s).+\((.+)\)

ケース:

[Nisei](slightly scratched) [Ocellaris](unconcious)
L: 1799 Ocellaris: (slightly scratched) vs. N'isei: (mildly wounded)
[Nisei](slightly scratched) [Zealot Warrior](perfect condition)
L: 1799 Ocellaris: (slightly scratched) vs. zealot warrior: (mildly wounded)
[fire dragon](slightly scratched) [Zealot Warrior](perfect condition)
[King Jheric](slightly scratched) [Zealot Warrior](perfect condition)

1 と 2 は一致するはずですが、3 と 6 は一致しないはずです。() の前のセクションに 2 つの単語があります。(?!\s) または (?!\b) を実行して次の単語を無視しようとしましたが、代わりに前の文字に戻って無視するようです。

結果

Case 1:
1: [1,6] Nisei
2: [8,26] slightly scratched
3: [29,38] Ocellaris
4: [40,57] unconcious
Case 2:
1: [8,17] Ocellaris
2: [20,38] slightly scratched
3: [44,50] N'isei
4: [53,67] mildly wounded
Case 3:
1: [1,6] Nisei
2: [8,26] slightly scratched
3: [29,34] Zealo
4: [45,62] perfect condition
Case 4:
No Match
Case 5:
No Match
Case 6:
1: [1,4] Kin
2: [14,32] slightly scratched
3: [35,40] Zealo
4: [51,68] perfect condition

アップデート:

一般的なパターンは

Person or NPC (condition) Person or NPC (condition)

個人は大文字の名前を 1 つしか持つことができませんが、NPC はさまざまな大文字の名前を 2 つ持つことができます... King Jheric vs wolfen berserker vs zealot warrior.

あいまいでなければならない理由は、次のようなパターンに一致する必要があるためです

Me:(condition) v Target:(condition) 
Reply:Some Person L:1200 King Jheric:(condition) vs. Target:(condition)
[Me] -> (condition) [wolfen berserker] -> (condition)
Lag: 1200 [zealot warrior](condition) vs. [King Jheric](condition)

更新 2:

(?<![a-z]|(?:\d+))([A-Z](?=[a-z'-]+)(?!.*\s\d+)[a-z'-]+).+\((.+)\).+(?<![a-z]|(?:\d+))([A-Z](?=[a-z'-]+)(?!.*\s\d+)[a-z'-]+).+\((.+)\)

これにより、最初または2番目の「もの」が2つの単語を持ち、そのうちの少なくとも1つが大文字である場合を除いて、オリジナルを含む上記のすべてのケースが解決されます。

4

1 に答える 1