gpt4 book ai didi

regex - 相当具体的 Perl 正则表达式

转载 作者:行者123 更新时间:2023-12-04 04:48:00 24 4
gpt4 key购买 nike

我正在寻找一种模式来匹配这个:

(词词词词) | 1234.5678% | (1234)

我想保存的地方 (词词词词) $1 (1234) $2

输入文件如下所示:

Header Crap | More Header Crap|Header Crap | More Header Crap|(words words words words) | 1234.5678% | (1234) | (words words words words) | 1234.5678%        |   (1234)(words words words words) | 1234.5678% | (1234) | (words words words words) |   1234.5678% | (1234)(words words words words) | 1234.5678% | (1234) | (words words words words) | 1234.5678% | (1234) | (words words words words) | 1234.5678% | (1234) | (words words words words) | 1234.5678% | (1234)

我认为这个问题与输入有关。它作为一个大 blob 出现(IE $_ 是一大串数据,需要解析以找到匹配项)

我尝试过的事情:
while ($_ =~ /(.*)\|{1}\d*?\.{1}\d*?%{1}\|{1}(\d*)/ {
do stuff with $1 and $2
}

以及
@matches = $_ =~ /(.*)\|{1}\d*?\.{1}\d*?%{1}\|{1}(\d*)/

还有一大堆其他类似的变化。我只是在寻找一些正确方向的指导。任何帮助将不胜感激!

最佳答案

在此处使用非贪婪量词:

while ($_ =~ /(.*?)\|{1}\d*?\.{1}\d*?%{1}\|{1}(\d*)/) {
^

我不知道你的括号是字面意思还是什么,但如果是字面意思,你需要转义它们:
while ($_ =~ /(\(.*?\))\|{1}\d*?\.{1}\d*?%{1}\|{1}(\(\d*\))/) {
^^ ^^ ^^ ^^

正如@Tim 所提到的,不需要 {1}量词(恢复文字括号):
while ($_ =~ /(.*?)\|\d*?\.\d*?%\|(\d*)/) {

关于regex - 相当具体的 Perl 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com