正则表达式

时间:2021-02-03 18:21:23

标签: regex perl

enter image description here

我不知道为什么术语之间有星号。我如何编写一个正则表达式来只返回字母和数字,中间没有星号?

我试过的正则表达式是: 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;

1 个答案:

答案 0 :(得分:0)

const input = "RMR*IV*43070661**5759.61";
const regex = /\*+/g;
console.log(input.replace(regex, " "));

这个正则表达式匹配一个或多个相邻的星号。由于 * 在正则表达式中具有特殊含义,因此必须使用反斜杠对其进行转义。我还使用全局选项(末尾的 g)使其适用于所有事件,而不仅仅是第一个。

然后我使用 JavaScript 中的 string.replace 函数将这些星号替换为一个空格。我不熟悉 perl,但我认为有一个类似的结构可以用另一个字符串替换用正则表达式找到的匹配项。