我想替换每个字符串,而不是像|
或;
之类的给定字符串的字符串。
我有简单的正则表达式:([a-zA-Z])\w+
......问题是要替换除该模式匹配之外的所有内容。
示例:qwerty 123456 ;,.'[]?/ asd
结果:qwerty|||||||||||||||||asd
提前致谢。
答案 0 :(得分:1)
您可以两种方式过滤/匹配/替换
第一个变体:
[a-z0-9] // filter/match/replace everything that is included in the defined Character set
第二变体:
[^a-z0-9] // filter/match/replace everything that is NOT included in the defined Character set
如您所见,唯一的区别是^
。 ^
是字符集中的否定运算符。
答案 1 :(得分:0)
^
取消字符集中的字符。 \w
需要省略,否则它也会尝试匹配任何单词字符backreference
到该捕获组这导致以下正则表达式:
[^a-zA-Z]+
答案 2 :(得分:0)
对于此输入:
<div (mouseenter)="startInterval()" (mouseleave)="stopInterval()" >
<ng-template ngFor let-bs [ngForOf]="back_screens" let-bsi="index" >
<img [src]="bs.image" *ngIf="activeIndex==bsi" >
</ng-template>
</div>
您希望匹配所有非字加上数字,以便您可以使用qwerty 123456 ;,.'[]?/ asd
但是既然你想要一次又一次地替换它们,你不需要使用量词[\W\d]
如果你的引擎或你的语言拥有它们,你也可以使用:build-in-character类。例如:
+
使用 Perl
查看节日测试[:alnum:] all letters and digits
[:alpha:] all letters
[:blank:] all horizontal whitespace
[:cntrl:] all control characters
[:digit:] all digits
[:graph:] all printable characters, not including space
[:lower:] all lower case letters
[:print:] all printable characters, including space
[:punct:] all punctuation characters
[:space:] all horizontal or vertical whitespace
[:upper:] all upper case letters
[:xdigit:] all hexadecimal digits
或:
echo "qwerty 123456 ;,.'[]?/ asd" | perl -lpe 's/[[:cntrl:][:punct:]\d ]/|/g'
具有相同的输出:
echo "qwerty 123456 ;,.'[]?/ asd" | perl -lpe 's/[\W\d]/|/g'
注:
有关详细信息,请参阅:Regular Expression Reference: Shorthand Character Classes