UE中如何使用正则替换行中部分字符串

2024-12-04 06:22:49
推荐回答(3个)
回答(1):

UltraEdit 支持3种正则表达式引擎,请在“高级”中选择。

你用的是 UltraEdit 自己的正则引擎。
按你的叙述,应该这样写:
%^(,???????^),*^P
替换为:
^1
▲%表示 行首
▲替换式中的^1代表 查找式中的第1个^(这里面的内容^)
▲查找式中^(内容^)这种形式最多可用9个

现在最通行的是 Perl 正则引擎。
建议你以后用这种,便于与别人交流。
(或者,以后在提问时,说明想用哪种。)

Perl 正则:
^(,.{7}),.*(\r?\n|\r)
替换为:
\1
▲.{7}表示 7个任意字符
  ▲如果是任意长度的任意数字:\d+
▲如果两个逗号间可以是任意长度的任意字符(非逗号),要这样写:
^(,.+?),.*(\r?\n|\r)

▲(\r?\n|\r)涵盖3种换行形式,以适应不同格式的文档。

若仍未解决,请“补充说明”或“追问”,我继续帮你。

回答(2):

正则表达式替换的话,他是替换当前字符串中所有的匹配的项,如过你事先不知道字符串里面的东西的话,用正则表达式提换 很难做到你的要求。你为什么不是String对象的方法来替换呢
String s = “,5435345,AAA,5435,325325,534534,”;
if( s.indexOf(",",1)>0){
s = s.replace(s.subString(s.indexOf(",",1)+1,s.length-1),"");
}

System.out.print(s)
,5435345,
如果你要 ,5435345 那你就把 s = s.replace(s.subString(s.indexOf(",",1)+1,s.length-1),"");
改为 s = s.replace(s.subString(s.indexOf(",",1),s.length-1),"");

回答(3):

你把正则和通配符弄混了。
^(,\d+),.* 替换成 \1或者$1