我最近开始使用vim
,并花了一些时间尝试解决这个问题。 所以我有一个字符串,例如"I'm 20 years old - and you?"
我需要从这个'I_m_20_years_old_-_and_you_'
在 java 中,像这样[^a-Z0-9-]+
似乎非常简单,但我无法在 Vim 中获得类似的正则表达式 我已经尝试过:26s/(W)/_/g
但它也删除了所有"-"。 如何在正则表达式中添加"而不是 -"?
提前感谢!
您的:26s/[^a-Z0-9-]+/_/g
尝试的问题是a-Z
,这不是一个有效的范围。应该是a-zA-Z
.
(A-z
会"工作",但如果你看一下ASCII表,它也包括[]^_`
,而不仅仅是字母。
下一个问题是+
不是 vim 中的正则表达式元字符(至少默认情况下不是(。[^a-zA-Z0-9-]+
会寻找一个非字母数字的非-
字符,后跟一个文字+
。它需要+
。
这给了我们s/[^a-zA-Z0-9-]+/_/g
,这有效。
根据 http://vimregex.com/应该是这样的
s/[^a-zA-Z0-9-]+/_/g
转义-
和+
:
:s/[^a-zA-Z0-9-]+/_/g