问题:
如何除string
或,
之外的.
以外,jumps over the lazy dog
中的所有字词都会被捕获?
即。 jumps
抓取over
the
lazy
jumps over the lazy dog.
。但对于dog
,\([\w']+\b)\g
也必须被捕获。
注意:这是JavaScript正则表达式。
我做了什么:
dog
会捕获所有单词,但它也会在没有标点符号的情况下捕获[\w']
。 (我使用$
在单词中包含撇号。
我怀疑答案与Newdata <- mydata %>%
filter(!grepl(".*unassigned.*",taxon))
有关吗?
答案 0 :(得分:2)
var r = /\w+\b(?!$)/gm
var a = [
"jumps over the lazy dog",
"jumps over the lazy dog."
]
a.forEach(function(s) {
var x = []
while(m = r.exec(s)) {
x.push(m[0])
}
console.log(x)
})
\w+\b(?!$)
\w+
匹配一个或多个单词字符\b
断言位置为单词边界(?!$)
否定前瞻确保后续内容不是行的结尾如果您需要确保最后一个单词后跟.
或,
,则可以使用\w+\b(?![^.,]?$)
代替.
。这样可以确保排除未在,
或var r = /\w+\b(?![^.,]?$)/gm
var a = [
"jumps over the lazy dog",
"jumps over the lazy dog.",
"jumps over the lazy dog;"
]
a.forEach(function(s) {
var x = []
while(m = r.exec(s)) {
x.push(m[0])
}
console.log(x)
})
后面的行末尾的字词。展开并运行以下代码段,以便在实践中查看此备用方法。
.force_encoding("ASCII-8BIT")
答案 1 :(得分:1)
正则表达式:(?![^,. ]+$)\w+
在最后一个单词[^,. ]
详细说明:
(?!)
否定前瞻[^]
匹配列表中不存在的单个字符\w
匹配任何字词(等于[a-zA-Z0-9_]
)+
匹配一次且无限次$
断言位于行尾的位置
function myFunction() {
console.clear();
var re = /(?![^,. ]+$)\w+/g;
var s = document.getElementById("input").value;
var m;
do {
m = re.exec(s);
if (m) {
console.log(m[0]);
}
} while (m);
}
<form action="javascript:myFunction()">
<input id="input" type="text" name="lastname" value="jumps over the lazy dog."><br><br>
<input type="submit" value="Submit">
</form>
答案 2 :(得分:0)
这似乎有效\w+\b(?=\W+\w|\s*[,.])
但我还有其他方法可以肯定。
格式化
\w+ \b # word in string
(?= # Check
\W+ \w # Not the last word
| \s* [,.] # or, a word followed by a dot or comma
)
if (matches = "asdf abcd +=&^$#@.+)(*&".match(/\w+\b(?=\W+\w|\s*[,.])/g))
console.log( matches );
&#13;