如何只匹配由点连接的单词
How match only words connected by dots?
我只想匹配通过点连接到其他单词的单词。例如,在下面的例子中,我想匹配"二"、"三"、"四",但而不是"一":
//match only "two" "three" and "four"
.one .two.three.four
我该怎么做?
我试过了,但不起作用:
('w+)(('.(([^'.]+'w)+))+)
(?<='.)('w+)(?='.'w+)|(?<='w'.)('w+)|(?<='s)('w+)(?='.'w+)
试试这个。请参阅演示。
http://regex101.com/r/jT3pG3/20
仅针对js,因为不支持lookbacking
(?='.('w+)'.'w+)|(?='s('w+)'.'w+)|(?='w'.('w+)'b)
请参阅演示。
http://regex101.com/r/jT3pG3/22
只需删除重复的结果,因为某些组可能满足多个条件。
你试过这个吗?
'S+'.'S+/i
这里有一个你可以轻松练习regex的网站。http://rubular.com/r/FguTt59e8E
如果只要求单词与点链接(即单词链的第一个单词之前不需要初始点),则可以使用此较短的正则表达式:
(?=('b'w+'b)(?='.('w+'b)(?!'.)|'.'w+))
也不提供重复匹配;因此不需要过滤;你只需要检查第一和第二个子比赛。第一个子匹配将包含大部分单词,而第二子匹配将包含链的最后一个单词。
大量使用lookahead,但我认为JS中没有regex解决方案。
regex101演示
一个可能的替代方案是匹配由一个点连接的每个单词链,然后在点上拆分。。。
var s = ".one .two.three.four .one. one.two";
var reg = /'b'w+(?:'.'w+)+'b/g;
var count = 0
while ((m = reg.exec(s)) != null) {
var words = m[0].split(".");
console.log("Word chain " + count + ": " + words.join(",") + "'n");
count++;
}
jsfiddle演示
相关文章:
- 当鼠标悬停在文本中的单词上时显示警报
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 拆分单词jquery
- 如何使用密码检测网络中的状态连接
- 如何让程序检查所选单词中是否有按键
- 如何处理node.js节点mongodb中的连接和查询队列
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- Twilio-显示所有连接参与者的远程参与者视频
- 操作放置在画布上的元素之间的连接
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- Javascript-如何连接单词脚本的两个大写首字母
- 如果突出显示某个单词,并且用户单击了连接单词,请突出显示这两个单词
- 如何只匹配由点连接的单词
- 如何用javascript将一个单词连接到另一个单词
- 将字母连接成一个单词
- 如何连接分裂的单词
- 如果多个单词连接在一起,Regex将替换除最后一个非换行空格外的所有空格
- 通过与javascript中数组的单词进行比较来连接字符串的单词