正则表达式删除前导空格和破折号
如果你要删除的领先的非字母可以匹配:
^[^a-zA-Z]+
与''
(空字符串)替换它。
说明:
-
first ^
- 锚,以配合在 begining。 -
[]
- 焦炭类 -
second ^
- 否定一个字符类 -
+
- 一个或多个以前匹配的
所以正则表达式匹配一个或多个任何非字母是的在字符串的开头。
在你的情况下,它将摆脱所有的领先空间,领导连字符和领先的等号。总之第一个字母表之前的所有内容。
^\ W +通常做同样的事情,也许将+改成*(前面可能没有任何内容) – NomeN 2010-03-15 14:40:22
@NomenN:\ W不包括数字,但[^ a-zA-Z]可以包含数字。用*代替+不是一个好主意,说输入是“你好”,我不需要替换任何东西。但是如果我使用*,我仍然会有一场比赛(空比赛),我会用空蜇取代它......导致没有改变。使用+不会匹配任何东西以替代...使其更有效率。明智的。 – codaddict 2010-03-15 15:06:44
我猜数字部分取决于要求。 * vs +的好解释,我没有考虑过。 – NomeN 2010-03-15 18:22:03
$a=~s/- = - - //;
的Java:
String replaced = a.replaceFirst("^[-= ]*", "");
我会将+改成* – NomeN 2010-03-15 14:41:51
@NomeN:为什么?如果没有任何违规角色存在 - 噢,等等,我看@codaddict已经涵盖了这一点。 – 2010-03-15 15:43:06
明白了........ – 2010-03-15 15:57:58
假设的Java试试这个正则表达式:
/^\W*(.*)$/
检索捕获组1的字符串!
\W*
比赛之前的所有非单词字符(.*)
然后用相匹配的第一个字字符开始的所有字符结束
^,$是界限。在这种情况下,你甚至可以不用$。
提示请尝试优秀的Java regex tutorial以供参考。
谢谢@NomeN,你推荐的教程非常好:) – 2010-03-15 22:41:15
在Python:
>>> "- = - - What is your name?".lstrip("-= ")
'What is your name?'
要删除任何类型的空白,使用.lstrip("-= \t\r\n")
。
不是。 'lstrip'获取一个字符列表,而不是一个正则表达式。 – 2010-03-15 15:10:19
你在用什么语言工作? – 2010-03-15 12:24:25
现在所有的答案都是正确的,其中一些更严格,他们从字符串中删除的更自由。不同的语言对于它们的正则表达式也有稍微不同的实现/语法。所以你必须对你的正则表达式的语言和要求非常具体,以得到'最好'的答案。 – NomeN 2010-03-15 13:23:33