我有以下文字:正则表达式捕获行中的第二个空格?
亲近,是旁边,依照顺序,或沿指定路线/ 方向
我怎么会在“E后面的空格匹配“关闭,然后用标签替换它?
虽然这可能对大家都很容易,但我花了4个小时试图做到这一点,但没有成功。
一般规则是“只匹配第二个单词之后的空格”。我有超过2000个独特的线,这就是为什么我需要一个正则表达式。
谢谢!
我有以下文字:正则表达式捕获行中的第二个空格?
亲近,是旁边,依照顺序,或沿指定路线/ 方向
我怎么会在“E后面的空格匹配“关闭,然后用标签替换它?
虽然这可能对大家都很容易,但我花了4个小时试图做到这一点,但没有成功。
一般规则是“只匹配第二个单词之后的空格”。我有超过2000个独特的线,这就是为什么我需要一个正则表达式。
谢谢!
在vi
编辑器,你可以使用这个搜索/替换:
:s/^\([[:blank:]]*\w\+[[:blank:]]\+\w\+\)[[:blank:]]\+/\1\t/
或更短(感谢@PeterRincker):
:%s/\v(\w+\zs\s+){2}/\t
有点短:':%s/\ v(\ w + \ zs \ s +){2}/\ t'甚至更短:':%norm 2f r^I'其中'^ I'是通过键入的制表符'
谢谢@PeterRincker:'%s/\ v(\ w + \ zs \ s +){2}/\ t'是一个很好的 – anubhava 2014-11-06 21:13:13
搜索:^([^ ]+[ ]+[^ ]+)[ ]
替换:\1\t
从行的开头,寻找非空格后面的空间,然后另一组非空间的格局。最后,匹配一个空格字符。
替换是导致最终空格字符的所有内容,然后是选项卡。
演示:http://regex101.com/r/oS8vV7/1
你可能不能够匹配只有你要替换的空间。这将需要可变长度的后视镜isn't supported。
s/\s//2
这可以用于搜索空间(\s
)并删除空间,其中2
表示第二个空格。
用这个特定的文字来做这件事很容易..是否有更通用的规则需要遵循?什么语言/正则表达式引擎? – 2014-11-06 19:58:04
是的,我希望提供帮助的一般规则是“总是只匹配一行中的第二个空格,没有别的,没有什么不足。”我必须做这2000次,然后用选项卡替换匹配的空间 – user798719 2014-11-06 20:10:24
为什么你想使用正则表达式?为什么不使用字符串函数? – anubhava 2014-11-06 20:23:53