簡體   English   中英

匹配內部文本的正則表達式:-

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM