在tic标记之间捕获子字符串的perl regrex

时间:2018-12-22 00:39:39

标签: regex perl

我正在尝试在perl中找到一种解决方案,该解决方案可以在tic标记之间捕获以下字符串中的文件名。

this.accessToken = this.url....
this.router.navigate('wherever-you-wanted-to-go-in-the-first-place');

我需要以wapenc结尾吗?T = mavodi-7-13b-2b-3-96-1e3431a

2 个答案:

答案 0 :(得分:3)

您的正则表达式中的最后一个滴答似乎与输入字符串中的不同-char 8217(右单引号U + 2019)与8216(左单引号U + 2018)。另外,在源中使用Unicode字符时,请确保包含

use utf8;

并保存UTF-8编码的文件。

修复了这两个问题之后,该代码对我有用:

#! /usr/bin/perl
use warnings;
use strict;
use utf8;

my $str = "Saving to: ‘wapenc?T=mavodi-7-13b-2b-3-96-1e3431a’";

(my $results) = $str =~ /‘(.*?[^\\])’/;
print $results if $results;

答案 1 :(得分:1)

您的tic字符不在7位ASCII字符集中,因此这里有一个完整的字符编码兔子洞。但是快速而肮脏的解决方案是捕获扩展字符之间的所有内容。

($result) = $str =~ /[^\0-\x7f]+(.*?)[^\0-\x7f]/;

[^\0-\x7f]匹配字符值不在0到127之间的字符,即,不是7位ASCII字符的任何字符,包括换行符,制表符和其他控制序列。无论您的输入是UTF-8编码还是已经解码,此正则表达式都将起作用,并且也可能适用于其他字符编码。