我没有使用任何特定的编码语言,只是一个带有“ find”和“ replace”的程序,其中两个字段都使用Regex。例如,短语
let testObjectOne = {
'title': $title.val(),
'typ': $typ.val(),
'assign': $assign.val(),
'files': $file.val().match(/[\/\\]([\w\d\s\.\-\(\)]+)$/)[0],
'priority': $priority.val(),
'category': $category.val(),
'textField': $textField.val(),
'end_date': $date.val(),
'id': 0,
};
if (localStorage.getItem('key') === null) {
localStorage.setItem('id', "0");
let temp_Array = [];
temp_Array.push(testObjectOne);
localStorage.setItem('key', JSON.stringify(temp_Array));
} else {
let id_value = localStorage.getItem('id');
let temp_array = JSON.parse(localStorage.getItem('key'));
id_value++;
testObjectOne['id'] = id_value;
temp_array.push(testObjectOne);
localStorage.setItem('key', JSON.stringify(temp_array));
localStorage.setItem('id', id_value);
}
会变成
too many professionals
我想“发现”任何出现的重复字母,我知道我可以解决
tooo many professsionals
让我感到困惑的是“把字母加倍并加倍”。正则表达式中是否有任何符号提及“当前字符”或类似的东西?
编辑:谢谢大家的建议。事实证明,“替换”字段实际上并未使用正则表达式,而IMO是正则表达式,而我的问题现在毫无价值。
答案 0 :(得分:3)
答案 1 :(得分:3)
Tim的表达式不正确,因为(.)
引用了任何字符,我们不希望替换它。我们只希望替换(英文)字母或[A-Za-z]
。
正确的方法可能是带有i
标志的表达式:
([a-z])\1
或者可能是没有i
标志的表达式:
([A-Za-z])\1
const regex = /([a-z])\1/gmi;
const str = `too many professionals
would turn into
tooo many professsionals`;
const subst = `$1$1$1`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
jex.im可视化正则表达式:
答案 2 :(得分:3)
两倍至三倍
找到(?m)(?:([a-zA-Z])(?!\1)|^)(([a-zA-Z])\3)(?!\3)
替换$1$2$3
https://regex101.com/r/tOpl82/1
解释
(?m) # Multi-line mode
(?:
( [a-zA-Z] ) # (1), Character behind
(?! \1 ) # not a dup.
| # or,
^ # BOL
)
( # (2 start)
( [a-zA-Z] ) # (3), Character to dup check
\3 # this is duped.
) # (2 end)
(?! \3 ) # The dup can't be a triple
答案 3 :(得分:1)
这几乎是您的问题的一部分:)。
这还取决于您使用的正则表达式的味道。
例如对于gnu sed,是
$ echo 'ffoobarr' | sed -e 's/\(.\)\1/\1\1\1/g'
fffooobarrr
所以,要使它变得三重,我只是使用\1\1\1
作为替换模式。
答案 4 :(得分:1)
考虑到已经三重的字母不应该附加四分之一的另一个想法。
(([A-Za-z])\2\2+)|(\w)\3
替换为:
$1$3$3$3
这个想法是在第一组三联或更多字母|
或第三组中捕获双字母。只有一个组可以匹配:组1或组3。在替换中,任何一个组将始终为空。