繁体   English   中英

使用正则表达式匹配由标点符号分隔的单词

[英]Match words separated by punctuation characters using regex

示例字符串:

这是一个例子

我想匹配:这是一个例子。

我尝试了这个:

<script type="text/javascript">
   var string="this!is.an?example"; 
   var pattern=/^\W/g;
   alert(string.match(pattern));
</script>

尝试这个:

var words = "this!is.an?example".split(/[!.?,;:'"-]/);

这将创建一个包含每个单词的字符串数组。
如果要将其转换为单个字符串,并且单词之间用空格分隔,则可以调用words.join(" ")

编辑 :您也可以在\\Wstr.split(/\\W/) )上拆分,但是它可能比您想要的字符更多。

我不明白您为什么要显式匹配 ,但是如果您的目标是去除所有标点符号,则可以这样做:

var words = "this!is.an?example".split(/\W/);
words = words.join(' ');

\\W将匹配除字母,数字和下划线以外的任何字符。

如果还要在下划线上进行分割,请使用以下命令:

var words = "this!is.an?example_with|underscore".split(/\W|_/);

如果您只想匹配:

(\w|\.|!|\?)+

如果要将所有标点符号替换为空格,可以执行以下操作:

var str = str.replaceAll([^A-Za-z0-9]," ");

这将所有非字母,数字替换为空格。

/^\\W/g表示匹配第一个字符不是字母或数字的字符串

而字符串"this!is.an?example"显然不是以非字母或非数字开头的。

请记住, ^表示整个字符串以开头,而不是您要匹配的字符串开头。 还要记住,大写\\ W是所有与小\\ w不匹配的东西。 有了这个提醒,您可能想要的是:

var string="this!is.an?example"; 
var pattern=/(\w+)/g;                   // parens for capturing

alert(string.match(pattern).join(' ')); // if you don't join,
                                        // some browsers will simply
                                        // print "[object Object]" 
                                        // or something like it

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM