簡體   English   中英

如何從Perl字符串中提取不同數量的數字組?

[英]How can I extract a varying number of groups of digits from a Perl string?

我正在嘗試使用以下格式在Perl中解析字符串:

Messages pushed to the Order Book queues 123691 121574 146343 103046 161253

我想訪問字符串末尾的數字,因此打算進行匹配

/(\\d+)/s

我的問題是,末尾的值數量包含可變數量的字符串。

格式化正則表達式以能夠分別訪問每個數字的最佳方法是什么? 我是C ++開發人員,只是在學習Perl,所以我試圖找到最干凈的Perl方法來實現這一目標。

謝謝你的幫助。

只需使用/ g標志使match運算符執行全局匹配即可。 在列表上下文中,match運算符將所有結果作為列表返回:

@result = $string =~ /(\d+)/g;

如果沒有其他數字,則此方法有效。

您可以在帶有全局標記的列表上下文中使用match運算符,以獲取所有括號捕獲的列表。 例:

@list = ($string =~ /(\d+)/g);

您的列表現在應該在字符串中包含所有數字組。 有關更多信息,請參見match運算符上的文檔。

“在標量上下文中,每次執行m // g都會找到下一個匹配項,如果匹配,則返回true,如果沒有進一步的匹配,則返回false”-(來自perldoc perlop

因此,您應該能夠進行全局正則表達式循環,如下所示:

while ($string =~ /(\d+)/g) {
    push @queuelist, $1;
}

我會做這樣的事情:

my @numbers;
if (m/Messages pushed to the Order Book queues ([\d\s]+)/) {
   @numbers = split(/\s+/, $1);
}

無需將其塞入一個正則表達式中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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