我有一个String扩展名:
Hey @jessica @jessica
newString现在等于Hey @jessica
。预期结果应为-s
答案 0 :(得分:0)
使用此正则表达式:
(?<=\s)\S+$
示例:https://regex101.com/r/kGnQEM/1
/(小于?= \ S)\ S + $ /克
正面观察(?&lt; = \ s)
断言下面的正则表达式匹配
\ s匹配任何空白字符(等于[\ r \ n \ t \ f \ v])
\ S +匹配任何非空格字符(等于[^ \ r \ n \ t \ f \ f])
- 量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
$在字符串末尾或行之前断言位置 字符串末尾的终结符(如果有的话)
答案 1 :(得分:0)
只需改变你的模式:
refreshUser (): Promise<User> {
return repository.getUserById(this.currentUser.id)
.then(user => {
this.currentUser = user;
return user;
})
;
}
let pattern = "\\w+$"
匹配任何字词,即\w
[A-Za-z0-9]
表示一个或多个答案 2 :(得分:0)
我认为这是因为*
regex operator将
匹配0次或更多次。尽可能多地匹配。
这可能会导致它同时将<末尾没有字符'加上与最后的字匹配,从而导致两次替换。
如@Code所述,如果你使用let pattern = "\\w+$"
,它只会在有字符的情况下匹配,从而消除'无字符'匹配。
"Word1 Word2"
^some characters and then end
^0 characters and then end