我有这段文字:
@Heurtebise (Il ramasse son sac)
Vous regretterez de m'avoir fait du mal.
(Silence.) Vous me chassez ?
@Eurydice
Le mystère est mon ennemi. Je suis décidée à le combattre.
oui oui.
我想要2组2场比赛,我想要的结果是:
Match 1
1. @Heurtebise (Il ramasse son sac)
2. Vous regretterez de m'avoir fait du mal.
(Silence.) Vous me chassez ?
Match 2
1. @Eurydice
2. Le mystère est mon ennemi. Je suis décidée à le combattre.
oui oui.
我不明白为什么我的正则表达式/^(\@.+)$([^(\@|\#)]+)/
与以括号开头的第四行不匹配。这是我得到的结果:
Match 1
1. @Heurtebise (Il ramasse son sac)
2. Vous regretterez de m'avoir fait du mal.
Match 2
1. @Eurydice
2. Le mystère est mon ennemi. Je suis décidée à le combattre.
oui oui.
注意如何跳过(Silence.) Vous me chassez ?
中的行match 1
。不明白为什么!
在此处查看完整案例:http://rubular.com/r/RR2eDc4ZBQ
有人可以帮忙吗?谢谢。
答案 0 :(得分:3)
错误在字符类中,因此排除了以@
或#
开头的行:
[^(\@|\#)]
避免使用@
和#
,但也避免使用(
,|
和)
。字符类不需要交替和括号。使用[^@#]
使您的示例代码对我有用。
答案 1 :(得分:3)
您可以使用
/^(@.+)((?:\R(?![@#]).*)*)$/
请参见regex demo。它将匹配以@
开头的任何行,然后匹配不以@
或#
开头的所有连续行。
详细信息
^
-一行的开头(@.+)
-第1组:@
和该行的其余部分((?:\R(?![@#]).*)*)
-第2组:0次或多次出现:
\R(?![@#])
-不跟@
或#
.*
-该行的其余部分$
-行尾(虽然不需要)。