stringi = "fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
我能够使regEx动态地在每个单词中找到每个字符X的最后一次出现:(我称之为动态,因为我只需要改变一个点)
(n)(?!(\w+?)?\1(\w+?)?)
给出了
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
^ ^ ^ ^ ^
(d)(?!(\w+?)?\1(\w+?)?)
给出了
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
^ ^ ^ ^ ^
我怎样才能获得动态的"正则表达式。这意味着我必须替换上面的一个地点给我:
some regEx with >>> n <<<
给出了
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
^ ^ ^ ^ ^
some regEx with >>> d <<<
给出了
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
^ ^ ^ ^ ^
是否有可能与regEx相匹配,并且当我想匹配另一个角色时我只需更改一个位置?
纯regEx,没有js字符串拆分等..
随着我的后视,我遇到了固定长度的问题。
答案 0 :(得分:2)
这意味着我必须更换一个地点
首先匹配.spinner {
display: block;
position: fixed;
z-index: 1031;
top: calc( 50% - ( ...px / 2) ); /* where ... is the element's height */
right: calc( 50% - ( ...px / 2) ); /* where ... is the element's width */
}
然后匹配其他所有内容:
n
n(\S*)
如果这是一个有趣的问题,因为Chrome有implemented lookbehinds(幸运的是看起来很无聊)你可以用这个正则表达式获得相同的结果:
var str = "fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd";
var char = 'n';
console.log(str.replace(new RegExp(char + '(\\S*)', 'g'), '*$1'));
var char = 'd';
console.log(str.replace(new RegExp(char + '(\\S*)', 'g'), '*$1'));
答案 1 :(得分:1)
在this regex demo中,使用javascript,lookbehind似乎没有固定的长度。所以这是正则表达式:
(?<=\b[^\Wd]*)d
说明:
\b
是一个词障碍[^d]*d
找到非d
个字符,然后找到d
[^\Wd]
不是d
,而是单词字符。即\W
不是单词字符,因此[^\W]
是单词字符。因此[^\Wd]
是除d
\b[^\Wd]*d
会匹配每个单词的开头,直到第一个d
。使用正确的结构,这可能就足够了。 (?<=...)
是外观。