如何将一个正则表达式输出传递给perl中的另一个正则表达式

时间:2016-10-18 08:09:05

标签: perl

如何结合两个正则表达式。这是我的意见:

1.UE_frequency_offset_flag  else { 2}   UE_frequency_offset_flag
2.served1   0x00    Uint8,unsigned char
#my first regex expression is used for extracting the values inside curly braces 
my ($first_match) = /(\b(\d+)\b)/g;
print "$1 \n";
#my second regex expression   
my ($second_match) = / \S \s+ ( \{ [^{}]+ \} | \S+ ) /x;

我试图将两种正则表达式结合起来,但没有得到预期的输出。

my ($second_match) = / \S \s+ ( \{ [^{}]+ \} |\b(\d+)\b| \S+ ) /x;

我的预期输出:

2,0x00

请在我犯错的地方帮忙?

1 个答案:

答案 0 :(得分:1)

这个问题对我来说并不完全清楚,因为我不知道你想要如何组合两个正则表达式或将一个的输出传递给另一个。

  • 如果要传递第一个正则表达式的捕获部分,则需要将其保存到变量:

    UInt.max

    然后您可以将变量<form action="#" method="POST" name="theForm" id="theForm"> <select form="theForm" name="selectedPage"> <option value="page_1">Page 1</option> <option value="page_2">Page 2</option> </select> <input type="submit" value="Load page" /> </form> <?php $requested_page = $_POST['selectedPage']; switch($requested_page) { case "page_1": header("Location: page_1.php"); break; case "page_2": header("Location: page_2.php"); break; default : echo "No page was selected"; break; } ?> 放在第二个正则表达式中。

  • 如果您想使用完整匹配并在其中搜索。然后,您需要执行以下操作:

    my ($first_match) = /(\b(\d+)\b)/g;
    my $captured = $1;
    

根据您的输入,这不会产生预期的输出。

以下代码将打印出来:

$captured

处理输入时。

my ($first_match) = /(\b(\d+)\b)/g;
print "$1,"; # Don't print one space then new line if you want to have a comma separating the two values
my ($second_match) = $first_match =~ / \S \s+ ( \{ [^{}]+ \} | \S+ ) /x;