删除标点并更换空白
下面是一个样本字符串我必应搜索,这将是与其他字符串在单独一行:删除标点并更换空白
第1章:我的名字是:Shojib(又名MHS)
这里是我的正则表达式来查找特定的行:(Chapter)()([0-9])(:)(.*)
现在我想保持的话和整数,并删除标点符号,并用下划线分隔各个单词和整数。例如,这是格式应该如何更换后的样子:
Chapter_1_My_name_is_Shojib_aka_mhs
因为你没有提到语言,所以这个答案是使用Perl符号。确切的替换语法取决于您使用的语言。
你需要用两个正则表达式来完成。第一个删除标点符号,第二个用下划线替换空格。
s/[^\w\s]//g
表示匹配[^\w\s]
并用''替换它。 \w
单词字符(包含不同的字符取决于你的正则表达式引擎至少0-9A-ZA-Z_如果你的语言支持Unicode它可以为所有的字母都在\w
)
\s
空白字符
[]
在字符类内的第一位置的字符类
^
是否定
[^\w\s]
不在\ W的所有字符和\ S
这将取代任何不是一个单词字符而不是空白的任何东西。
第二步是_
s/\s/_/g
你的正则表达式(Chapter)()([0-9])(:)(.*)
找到你行还可以提高,以取代剩余的空白。如果使用方括号,则可以创建捕获组,这意味着匹配的模式将存储到变量中。因此搜索Chapter
并将其存储到变量中是没有意义的,该变量已知。如果你不需要这些变量您可以在正则表达式简化为:
Chapter\s*\d:.*
\d
比[0-9]
\s*
同样的手段
你期望章节号比9大空白的任何量?然后使用
Chapter\s*\d+:.*
+
是指至少一个,所以\d+
将至少一个数字匹配。
不是Perl。常规文本编辑器的查找和替换正则表达式功能。即OpenOffice,TextWrangler,Eclipse,LibreOffice。 – user730009 2011-06-02 04:52:01
比尝试使用查找字段中前两个斜线之间的部分以及替换字段中斜杠2和3之间的部分。但它可能不适用于每个编辑器,取决于使用的正则表达式引擎。 – stema 2011-06-02 07:37:26
是否有任何替代程序没有perl符号?如果没有,我怎么能把这两个在Perl脚本?我正在讨论将查找和替换部分放在perl脚本中。我将使用TextWrangler for mac。 – user730009 2011-06-05 03:32:14
要求并不十分清楚,但是这应该这样做...
/[^A-Za-z0-9]/_/g
把你做的任何字符不是想用括号中的下划线替换
不是Perl。常规文本编辑器的查找和替换正则表达式功能。 – user730009 2011-06-02 04:51:04
@ user730009,哪位编辑? – 2011-06-02 10:30:35
你在用什么语言?我几乎可以说使用一个查找和替换非字母字符'_'将是非常简单的。 – wilbbe01 2011-05-31 04:15:11