计算以特定单词开头的行中的单词数
Count the number of words in the line beginning with a particular word
我想计算包含特定ID(例如*AUY)的特定行中的单词数。到目前为止,我已经尝试使用下面的正则表达式来查找行,但它不考虑"*"在开始
^ *(.*'b(?:''*AUY)'b.*) *$
下面是test string
*AUY: today is holiday so Peter and Mary do not need to go to work .
%mor: n|today cop|be&3s n|holiday conj|so n:prop|Peter conj|and n:prop|Mary v|do neg|not v|need inf|to v|go prep|to n|work .
%snd: <00:00:00><00:07:37>
%AUY: ok_pfp (0.40) er today is holiday errfr ::: so er Peter and Mary {is} ~ er do not need errfr ::: to go to work . errfr :;:a |
结果应该只是第一个字符串,但它返回结果匹配中的第一个和最后一个字符串。
设x
为字符串。
(x.match(/(^|'n)'*AUY[^'r'n]*/g) || [])
.map(
function(s) { return s.match(/'S+/g).length; }
);
将返回一个数组,其中包含以字符串'*AUY'开头的行中类字结构的个数。
解释:
正则表达式在字符串的开头或换行符之后查找字符串*AUY(即,在行开头,即使该行不是字符串的开头),以及在*AUY的第一个标记之后的任何非crlf字符(即,该行的其余部分)。
习惯用法|| []
在执行匹配后,如果匹配值为null
,则返回一个空数组,从而防止当期望一个数组而不是空值时出现错误。
最后一步.map
对匹配数组的每个元素进行操作,对非空格匹配进行计数,并将这些计数作为一个新数组返回。注意,我们不需要用|| []
习语保护这个匹配,因为空匹配是不可能的,因为该行至少包含非空白字符串*AUY。
您可以使用这段代码作为您实际想要做的事情的起点。好运!
试试:
/^.*?'*AUY:(.*?)$/gmi
解释- ^确定行起始位置
- . * ?匹配任何字符(行终止符除外)
- * ?量词- 0到无限次之间的匹配(惰性)
- '*匹配字符*
- AUY:匹配字符AUY
- . * ?匹配任何字符(行终止符除外)
- $在行末断言位置
- g修饰符:global。第一次匹配后不返回
- m修饰符:多行。导致^和$匹配的开始/结束每一行(不只是字符串的开始/结束)
- i修饰符:insensitive
Rubular
代码示例:
function countWord(){
const regex = /^.*?'*AUY:(.*?)$/gmi;
const str = `*AUY: today is holiday so Peter and Mary do not need to go to work .
%mor: n|today cop|be&3s n|holiday conj|so n:prop|Peter conj|and n:prop|Mary v|do neg|not v|need inf|to v|go prep|to n|work .
%snd: <00:00:00><00:07:37>
%AUY: ok_pfp (0.40) er today is holiday errfr ::: so er Peter and Mary {is} ~ er do not need errfr ::: to go to work . errfr :;:a |`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
alert(m[1].match(/'b('w+)'b/g).length);
}
}
使用以下正则表达式,
(^.*'*AUY.*$)
可以在这里勾选
相关文章:
- Javascript-从随机的单词数组中创建段落
- 匹配由单个空格分隔的单词,单词的开头或结尾不能有空格
- 单词数组到字符串
- Javascript/Node AI-如何使用match从单词数组中重复单词
- 在单词数组中查找相似的单词
- JavaScript单词搜索,从单词的开头开始带空格和不带空格
- JavaScript正则表达式搜索每个单词和后续单词的开头
- 在 HTML 5 表单中每个单词的开头添加一个井号标签 (#)
- 在单词数组中搜索单词
- 将句子字符串拆分为单词数组,然后将单词数组拆分为单词数组中的字符数组
- Angular-jQCloud:根据单词数调整单词大小
- underscore.js基于单词数组从字符串中删除文本
- Javascript:将每个单词的开头大写
- 从JavaScript中的单词数组中查找第n个字符
- Coffeescription在页面上的单词数组中进行迭代
- 我们如何用单词数组填充一组
- CryptoJS将单词数组分成两部分
- 我遇到了一个挑战,每个单词的开头都要大写
- Regex: 用于不以单词字符开头的字符串
- 用正则表达式连续收集单词数组中的任意单词