[英]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.