掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1150|回复: 9

[求助] 【已解决】如何提取正则匹配结果?

[复制链接]

该用户从未签到

发表于 2016-1-11 22:02:46 | 显示全部楼层 |阅读模式
本帖最后由 qiuhao1112 于 2016-1-11 22:28 编辑 . h6 ~! D1 Q& O7 D: ^

& N4 i: U% O9 k* u% r; x, a最近使用notepad++和ultraedit一直有件让我非常郁闷的事,就是使用正则表达式匹配出了所需要的一堆字符串后却不知道怎么把这些字符串提取出来。。。折腾了好久,网上说ultraedit有个什么复制查找结果的功能按钮,可我愣是没找到,也不知道他们说的是哪个版本,这个问题简直要命,请高手帮我指点一下。。谢谢7 G+ y; n- l$ U- C1 a; {

* s3 k/ K0 a$ U% a另外曲线救国的方式我试过,太繁琐,太折腾,还容易出错,所以还是给个直接点的办法好了,仅提取匹配到的结果就行,谢谢了。( G0 b3 ^( k( |+ u4 d. f8 {

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2016-1-11 22:14:12 | 显示全部楼层

) W/ {' O2 B6 \! ~) ]额, 我还用着 UltraEdit 19。: N. c2 Z8 O  y* B) X! _
查找时,注意勾选“列出包含字符串的行”,按下 Enter (必须这样,至少我这个版本没有按钮啥的),就出现“含有查找字符串的行”,右键“复制到剪贴板”,就把那框里所有“含有查找字符串的行”都复制到剪贴板里了。/ P, x7 n2 b9 f
这里只是把“含有查找字符串的行”而不是“查找字符串”复制到剪贴板,可以先行把查找字符串前后都替换成换行,这样查找字符串就单独一行了,复制得到的结果就是查找到的字符串了。$ n1 j$ q* D0 M( J9 B5 W1 F  y# ]: {
可能有更简单直接的工具和办法,暂不研究了。
, K0 W" l! t5 `" ^9 l; C5 Y
# j3 K! Q1 k! u, a2 i! T
! z) k  l6 N# w. G# E; b; O+ G5 x3 ?5 M  _. P' `' J4 L' @0 E
; R5 i  `0 X" K* C

9 F' A# X6 U7 w/ x1 G6 H. `) r3 S3 M& c1 m" O
, ]4 Y/ U. j  z, ?

该用户从未签到

发表于 2016-1-11 22:20:27 | 显示全部楼层
把匹配出来的内容分割成新行,标记这些新行,复制也好,截切也罢,都随你怎么操作了

该用户从未签到

 楼主| 发表于 2016-1-11 22:27:16 | 显示全部楼层
Oeasy 发表于 2016-1-11 22:14" n0 b* ~% J7 k
额, 我还用着 UltraEdit 19。
2 ?/ c4 ]& \# X3 H* X: m查找时,注意勾选“列出包含字符串的行”,按下 Enter (必须这样,至少 ...

& E  e% ~+ M% S$ R( E- X感谢O大,这个方式我以前还真没想到过,很好的办法,再次感谢Oeasy解答的这么详细,图文并茂。

该用户从未签到

 楼主| 发表于 2016-1-11 22:28:21 | 显示全部楼层
onlyXXenglish 发表于 2016-1-11 22:20
6 E" f+ d& k$ {6 ?) j8 s把匹配出来的内容分割成新行,标记这些新行,复制也好,截切也罢,都随你怎么操作了
( L, ]% \1 Q, u: i
谢谢onlyXXenglish,问题解决了

该用户从未签到

发表于 2016-1-12 01:54:54 | 显示全部楼层
EmEditor的话,查找之后,可以直接复制、剪切全部的。
' d2 G9 h7 c& N  p, j- z- G当然,这个可能不理想,因为你的查找结果未必是一个完整的行。复制、剪切之后可能多个结果堆在一起。
6 j; m* p7 [& e1 N8 f6 g4 g所以,我的方法就是每个匹配项都用一行显示,也就是在开头和结尾都\n处理。
0 g! ]5 t3 k/ B同时在每个匹配项的前面加一个字符,如★* b! z4 K; t; r3 a5 y' e
为什么?
3 O! t- u& J/ k5 [6 r: U2 V# k+ h因为EmEditor可以给每行排序。这样一来,行首为★的就排列到了一起,而这些就是你想要的结果。5 _. f* Y& L3 h8 G' f
再将其他不要的(非★开头)的删除即可。
4 n$ ~4 x) Y% A. V- k当然,你行首不加★,分行处理后直接复制、剪切也行。
% _' j+ q- k# T( \" Y3 `只不过个人经验,如果CPU不行,有些大文件的复制、剪切很有些慢。1 h) e, B, X. B! x# }4 ?+ c

) z" u! Q0 \8 P& o+ Y其他文本工具,本人没有用过,想来也差不多。

该用户从未签到

 楼主| 发表于 2016-1-12 21:44:01 来自手机 | 显示全部楼层
LYX1692 发表于 2016-1-12 01:549 S. |& ~4 n  |, N: t
EmEditor的话,查找之后,可以直接复制、剪切全部的。( r  W( ]8 E1 a* u
当然,这个可能不理想,因为你的查找结果未必是一个 ...
  G# Y& u3 k; j
提取成功了  谢谢你的解答!

该用户从未签到

发表于 2016-1-13 09:02:48 | 显示全部楼层
本帖最后由 sky66 于 2016-1-13 09:09 编辑
) {9 r2 `; d$ A! x8 q% P% t. o
; v* x. d( h& |2 T% s看来楼主也可以用emeditor的话, 我提供一下我的方式, , c! S+ w% A- n, {& F1 ]& d
因为常做, 昨天也在用, 我觉得还蛮方便的" o3 ?% w5 O( x# f- V; g, X9 ~# _

* K# I- Q' l. ZStep1; ?4 G+ W' |9 T- M# D% x
用正则查找, 前后要用 ( ), 然后按”全部提取$ ^$ H) H; S( D8 n. g* D
$ t& R8 h1 B9 m' y: h) P
Step2
  w1 @: m3 {* P' s* i全部提取”后会在新的标签, 这时”替换全部”, 替换为 \n\1\n6 Q# H$ G" y. P# ]* M  ~
0 y% t% g+ ~2 D, ^
Step3
/ e( @) M. \+ O. H  V8 I再查找一次, 然后再按一次”全部提取3 `3 Y/ b. e1 ]' ~* q: G7 D' A
# g( t* w+ o- U6 Z/ y" Q
Step4
4 \$ O% h& u3 M; D又会产生一个新标签, 这个标签就是所需的正则匹配结果.
; g" G  |) e$ J/ b2 b: l$ r/ b: c
+ ^5 n4 C- N% B% q9 @. }
, [4 [( ^5 F4 f0 P- h

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x
  • TA的每日心情

    2019-9-20 08:37
  • 签到天数: 214 天

    [LV.7]常住居民III

    发表于 2017-5-9 09:24:52 | 显示全部楼层
    其实 装个Perl 然后抽取应该比较简单~~
  • TA的每日心情
    无聊
    2021-9-17 23:16
  • 签到天数: 341 天

    [LV.8]以坛为家I

    发表于 2017-5-9 17:00:33 | 显示全部楼层
    Vim+Grep简直是神器
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-4-17 01:30 , Processed in 0.023065 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表