[英]Regular Expression To Match a Text Inside : -
我正在构建一个需要匹配内部: text to match -
。 例如,如果我有这个字符串:
nathanpc/ltweet:在#StackOverflow 上提问:“正则表达式匹配内部文本:-”-@devs
我想匹配Asking a question at #StackOverflow: "Regular Expression To Match a Text Inside: -"
。 第一个:
和最后一个-
之后的所有内容,但是正确的正则表达式是什么?
PS:我正在使用 Javascript 和 jQuery
如果您使用与 Perl 兼容的正则表达式,例如大多数语言中的正则表达式:
/:(.*)-/
您可能不需要斜杠,具体取决于语言。 捕获组 1 将获得您想要的内容。
.*
是一个贪心匹配器,因此它将尝试匹配尽可能多的字符,直到输入中的最后一个破折号。
如果您使用像.
它将尝试形成最大的匹配(至少在 Perl 兼容的正则表达式引擎中)
所以要匹配这个像:(.*)-
这样简单的东西就可以了。
请参阅 Perl 中的示例脚本:
my $str = "Discard:Testing:- one two three -discard";
$str =~ m/:(.*)-/;
print $1;
$1 = "Testing:- one two three"
或在 javascript 中: http://www.regular-expressions.info/javascriptexample.html
这对我有用(红宝石):
[^:]+:\s+([^-]+.*?)\s-
测试:
test = "nathanpc/ltweet: Asking a question at #StackOverflow: 'Regular Expression To Match a Text Inside : -' - @devs"
m = test.match /[^:]+:\s+([^-]+.*?)\s-/
然后
m[1].to_s
生产
Asking a question at #StackOverflow: 'Regular Expression To Match a Text Inside : -'
正如其他人所注意到的那样,更简单的:(.*)-
工作方式相同。 也许没有空格:\s(.*)\s-
“标准”正则表达式无法完全按照您的描述解析此文本。 该解析需要一些不能用正则表达式表达的上下文。 比如收到第一个“-”时,表达式怎么不结束呢?
在我的脑海中,我只能使用 Perl 扩展正则表达式,它允许子表达式解析,但这并不容易,因为你必须计算“:”和“-”的出现次数才能完全匹配最后一个一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.