如果我有大文,并且我需要保留匹配的内容,我该怎么办?
例如,如果我有这样的文字:
asdas8Isd8m8Td8r
asdia8y8dasd
asd8is88n8gd
asd8t8od8lsdas
as9ea9ad8r1n88r8e87g6765ejasdm8x
并使用此正则表达式:[0-9]([a-z])
将数字后的所有字母分组并替换为\1
我会将所有(数字)(字母)重新表示为(字母)(如果我想删除休息,只留下匹配的字母)?...
将此文本转换为
ImTr
y
ing
tol
earnregex
如何用分组替换此文本并删除其余文本?
如果我想删除所有但不匹配的? 在这种情况下,将文本转换为:
8I8m8T8r
8y8d
8i8n8g
8t8o8l
9e9a9r1n8r7g5e8x
我可以匹配所有不是[0-9]([a-z])
吗?
谢谢! :d
答案 0 :(得分:2)
您可以使用以下正则表达式:
(?i-s)[0-9]([a-z])|.
替换为(?{1}$1:)
。
要删除所有但不匹配的内容,请使用相同正则表达式的(?{1}$0:)
替换。
<强>详情:
(?i-s)
- 内联修饰符打开不区分大小写的模式并关闭DOTALL模式(.
与换行符不匹配)[0-9]([a-z])
- 一个ASCII数字和捕获到第1组的任何ASCII字母(后面用字符替换模式引用$1
或\1
反向引用)|
- 或.
- 任何字符,但换行符。替换详情
(?{1}
- 条件替换的开始:如果组1匹配则...
$1
- 第1组的内容(或使用$0
反向引用时的整个匹配):
- 否则......没有)
- 条件替换模式的结束。