2011-03-06 120 views
1

可以在正则表达式中使用字符作为范围的分隔符吗? 例如,如果我想范围开始索引1并结束于字符$。我怎样才能做到这一点?从数字到特定字符的正则表达式范围

{1,我在这里放什么}

+1

把一些例子.. – 2011-03-06 02:53:32

+0

我有这样的字符串$ CM-PRQRPMD $。我想获取$符号内的字符串。问题是该字符串没有固定的长度,因此我不能使用这个{1,10}。 – mysticfalls 2011-03-06 04:14:20

回答

1

你没有。只需使用+?\$。例如,.+?\$至少匹配一个字符,包括第一个$.+?(?=\$):如果您要排除的$,包裹它在先行断言

;(对于这一点,只需使用.*?\$$不能是第一个字符,虽然)。

EDIT(响应于澄清):向对$之间匹配的标识符,并假设$ s时对应的标识符,则可以只写:\$(.*?)\$。圆括号将创建一个捕获组,以便从匹配中排除$。如果分隔符不是标识符的一部分,并且您需要查找多个匹配项(例如$AAA$BBB$),那么您需要使用零宽度声明:(?<\$)(.*?)(?=\$),以便在匹配时不会吸收$

+0

我有这个字符串$ CM-PRQRPMD $。我想获取$符号内的字符串。问题是该字符串没有固定的长度,因此我不能使用这个{1,10}。 – mysticfalls 2011-03-06 04:30:58

+0

我必须让它工作!感谢您的解决方案! – mysticfalls 2011-03-06 05:20:23

+0

@ user646578,不要忘记接受答案:) – 2011-03-06 06:32:33

2

这个正则表达式将匹配任何字母,数字或$符号。你需要的是什么?

[A-Za-z0-9\$] 

更新

给OP的评论来匹配 “$ CM-PRQRPMD $”,使用下面的正则表达式:

\$[A-Z-]+\$ 
+0

我可以把这个作为{1,[\ $]} – mysticfalls 2011-03-06 04:16:38

+0

没有。当我说范围0-9时,你知道我在说什么。当我说“范围”@ - 时,这包括了什么?谁知道,它没有定义。你可以做的是使用'\ p {P}'这意味着“任何标点符号”,所有\ p {}的定义[这里](http://www.regular-expressions.info/unicode.html ) – 2011-03-06 04:27:54

+0

也请注意,方括号和大括号之间存在差异。 '[123]'表示“匹配1,2或3”,“{1,2}”表示与前一次匹配1或2次。 – 2011-03-06 04:29:24