正则表达式如何替换并修改自身的部分内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式如何替换并修改自身的部分内容?相关的知识,希望对你有一定的参考价值。

我使用EditPlus来修改一个txt文档,文档格式是这样的
1、张慥
(关于张慥的介绍)
2、闽浩伟
(关于闵浩伟的介绍)
......
大概有1000多个人的介绍
现在要求把名字只保留姓而把名去掉,大概格式如下:
1、张*
(介绍)
2、闽*
(介绍)
.... 以后1000多人
该使用什么样的表达式来表示需要替换进去的内容呢?
我使用^[0-9].+来匹配每个人物的编号+名称,是可以完全正确的匹配的
关键是替换进去的内容该如何写?我只会用\0来获取匹配的原内容·····
谢谢高手指点~~未免浪费先放10分,回答正确后追加10分~
匹配的话很简单,^[0-9]、.+ 这样就足够了,但我想知道如何把匹配到的
"1、张慥" 替换成 "1、张*"
"2、闽浩伟" 替换为 "2、闵浩伟"

最核心的问题是如何取出 匹配的到文字的 前几个字符
目前我知道\0是代表匹配的内容本身。

一、请使用UltraEdit进行正则替换。

二、请参照下图进行替换。

正则表达式如下

(^\\d1,4[、.][一-龥])[一-龥]1,3

\\1*

参考技术A 没有用过EditPlus,但这类编辑工具的正则基本大同小异。
以下正则在EmEditor下测试通过。

查找:^([0-9]、[\u4E00-\u9FFF])[\u4E00-\u9FFF]+\r\n[^)]*\)

替换成:\1\*\r\n (介绍)

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

假设在UE的很多行数据中有其中2行数据,“,5435345,AAA,5435,325325,534534,”和“,4325345,CCC,2435,7653251,65234534,”,我想把每行第2个逗号之后的内容去掉,使用正则表达式“,???????,*^P”替换为“,???????,^P”或者是“,*,*^P”替换为“,*,^P”,但都不能达到目的,而是替换成了“*”或者“?”字符本身,请问大侠们在UE里有可以解决的方法吗?(分不多见笑了)

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种换行形式,以适应不同格式的文档。

若仍未解决,请“补充说明”或“追问”,我继续帮你。
参考技术A 正则表达式替换的话,他是替换当前字符串中所有的匹配的项,如过你事先不知道字符串里面的东西的话,用正则表达式提换 很难做到你的要求。你为什么不是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),"");
参考技术B 你把正则和通配符弄混了。
^(,\d+),.* 替换成 \1或者$1

以上是关于正则表达式如何替换并修改自身的部分内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript 正则表达式替换 URL 的主机部分

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

notepad正则怎么替换其中一部分

正则表达式对文本的部分替换

正则表达式,替换 指定范围内 的 特定字符串

正则表达式 -- 提取并替换 ${} 之间的内容