我有这个正则表达式:
/([a-záäéěíýóôöúüůĺľŕřčšťžňď])-$\s*/gmi
此正则表达式从我的文本中选择č - :
sme! a Želiezovce 2015: Spoloíč-
ne pre Európu. Oslávili aj 940.
但我想只选择-
(不含č
)(如果列表[a-záäéěíýóôöúüůĺľŕřčšťžňď]
中的某些字符位于-
之前)。
答案 0 :(得分:0)
在其他语言中,您可以使用lookbehind
/(?<=[a-záäéěíýóôöúüůĺľŕřčšťžňď])-$\s*/gmi
仅当-$\s*
前面有列表中的一个字符时,才匹配var match = /[a-záäéěíýóôöúüůĺľŕřčšťžňď](-$\s*)/gmi.match(string);
。
但是,Javascript没有lookbehind,因此解决方法是在其后面使用正则表达式部分的捕获组。
match[1]
当你使用它时,<a href="{{ pathFor i18n 'dictionary.update' }}">edit</a>
将包含以连字符开头的字符串部分。
答案 1 :(得分:0)
首先,在正则表达式中,您在括号中放置的所有内容都将在匹配过程中细分,以便匹配数组将在其0
位置包含完整匹配的字符串,然后是所有正则表达式的括号从左到右。
/[a-záäéěíýóôöúüůĺľŕřčšťžňď](-)$\s*/gmi
会为您返回以下匹配字符串:["č-", "-"]
,以便您可以从匹配中提取所需的特定数据。
此外,$
字符在正则表达式中表示行的结尾,并且您正在使用多行标记,因此从技术上讲,此部分\s*
只是被忽略,因为在行之后没有任何内容出现在行中结束了。
正确的正则表达式应为/[a-záäéěíýóôöúüůĺľŕřčšťžňď](-)$/gmi