我有一串文字,里面可以有特定的标签。
示例:var string = '<pause 4>This is a line of text.</pause><pause 7>This is the next part of the text.</pause>';
我要做的是对<pause #></pause>
标记进行正则表达式匹配。
对于找到的每个代码,在这种情况下,它是<pause 4></pause>
和<pause 7></pause>
。我想要的是获取值4
和7
,以及字符串长度除以<pause #>...</pause>
标记之间的字符串。
我现在所拥有的并不多。 但我无法弄清楚如何抓住所有案例,然后循环遍历每个案例并获取我正在寻找的值。
我的功能现在看起来像这样,它并不多:
/**
* checkTags(string)
* Just check for tags, and add them
* to the proper arrays for drawing later on
* @return string
*/
function checkTags(string) {
// Regular expresions we will use
var regex = {
pause: /<pause (.*?)>(.*?)<\/pause>/g
}
var matchedPauses = string.match(regex.pause);
// For each match
// Grab the pause seconds <pause SECONDS>
// Grab the length of the string divided by 2 "string.length/2" between the <pause></pause> tags
// Push the values to "pauses" [seconds, string.length/2]
// Remove the tags from the original string variable
return string;
}
如果有人能解释我如何做到这一点,我将非常感激! :)
答案 0 :(得分:1)
#!/bin/python
import sys
userFile=sys.argv[1]
f = open(userFile, 'r')
fileInfo=f.read()
sys.stdout.write(fileInfo)
sys.stdout.flush()
f.close
无法保存子群,您需要match(/.../g)
或exec
来执行此操作。这是一个基于replace
的辅助函数的示例,用于获取所有匹配项:
replace
由于您无论如何都要删除标记,因此您也可以直接使用function matchAll(re, str) {
var matches = [];
str.replace(re, function() {
matches.push([...arguments]);
});
return matches;
}
var string = '<pause 4>This is a line of text.</pause><pause 7>This is the next part of the text.</pause>';
var re = /<pause (\d+)>(.+?)<\/pause>/g;
console.log(matchAll(re, string))
。
答案 1 :(得分:1)
您需要创建一个循环以在文本中查找RegExp模式的所有匹配组。 匹配的组是一个包含原始文本,匹配值和匹配文本的数组。
var str = '<pause 4>This is a line of text.</pause><pause 7>This is the next part of the text.</pause>';
function checkTags(str) {
// Regular expresions we will use
var regex = {
pause: /<pause (.*?)>(.*?)\<\/pause>/g
}
var matches = [];
while(matchedPauses = regex.pause.exec(str)) {
matches.push([matchedPauses[1], matchedPauses[2].length /2]);
};
return matches;
}
console.log(checkTags(str));
&#13;
答案 2 :(得分:0)
作为一个起点,因为你到目前为止还没有多少,你可以试试这个
/<pause [0-9]+>.*<\/pause>/g
比使用
再次匹配数字/[0-9]+>/g
摆脱最后一个标志&gt;
str = str.slice(0, -1);