【发布时间】:2021-02-04 05:19:13
【问题描述】:
我不知道为什么这些术语之间有星号。如何编写正则表达式以使其仅返回字母和数字,中间不带星号?
我试过的正则表达式是: CUST_NUM_REMITT_AMT_REGEX => qr/^\w+ \w+ (.?) (.?)$/ 它在 perl 语句中是:
($edi_h{$process_data}{$get_remitt_data}{cust_num},
$edi_h{$process_data}{$get_remitt_data}{remitt_amt}) =
$rec =~ /$regex_h{CUST_NUM_REMITT_AMT_REGEX}/
if ($rec =~ /$regex_h{REMITT_IND}/);
($edi_h{$process_data}{$get_remitt_data}{cust_num}) = " ";
此表达式返回空白客户编号,但金额前面有一个星号。
问号是否返回结果?
代码前面有这一行
$/ = $sav_delimiter;
(@recs) = $file_data =~ /(.*?)\n/g;
【问题讨论】:
-
我看到您更新了问题以包含示例文本“\RMR*IV*43070661**5759.61”。您还可以提供您期望的文本吗?你说要删除星号,但是你想像“/RMRIV430706615759.61”一样运行所有东西还是应该用空格或其他东西替换星号?
-
另外,我不熟悉
=~语法。这是用什么语言运行的?有时,根据运行时的不同,正则表达式会有所不同。 -
=~ 语法告诉 Perl 应用正则表达式。
-
我相信每个词都应该有空格