【发布时间】:2009-07-15 15:13:51
【问题描述】:
我的程序读取其他程序的源代码并收集有关使用的 SQL 查询的信息。我在获取子字符串时遇到问题。
...
$line = <FILE_IN>;
until( ($line =~m/$values_string/i && $line !~m/$rem_string/i) || eof )
{
if($line =~m/ \S{2}DT\S{3}/i)
{
# here I wish to get (only) substring that match to pattern \S{2}DT\S{3}
# (7 letter table name) and display it.
$line =~/\S{2}DT\S{3}/i;
print $line."\n";
...
结果打印打印整行而不是我期望的子字符串。我尝试了不同的方法,但我很少使用 Perl,并且可能会犯基本概念错误。 (行中表名的位置不固定。另一个问题是多次出现,即[... SELECT * FROM AADTTAB, BBDTTAB, ...] )。如何获取该子字符串?
【问题讨论】:
-
感谢大家提供快速而多样的方法。我昨天和今天早上都尝试使用它们和/但只有 $& 对我有用。还要感谢(使用严格;使用警告;)向我展示我的即兴风格的线索。今天我也意识到我没有通知我在 Windows 下工作(我的珍珠是:这是 perl,为 MSWin32-x86-multi-thread 构建的 v5.8.7 版权所有 1987-2005,Larry Wall Binary build 813 [148120] 由提供ActiveState www.ActiveState.com 建于 2005 年 6 月 6 日 13:36:37)。再次感谢您。
-
面对我的“无知是一种幸福”后,我有点恼火,但它促使我......好吧......现在让我知道什么是'捕获组''括号/括号' 的意思是,它确实有效。请不要评论我已经觉得很傻。顺便说一句,有没有人支持全球投票将 perl 重命名为 - 我不知道 - 珍珠? ;)
-
当拉里·沃尔去寻找名字的时候,已经有一种语言叫珍珠了。