正则表达式 - 除字符串外的所有内容

时间:2017-07-05 09:09:57

标签: regex

我想替换每个字符串,而不是像|;之类的给定字符串的字符串。 我有简单的正则表达式:([a-zA-Z])\w+

......问题是要替换除该模式匹配之外的所有内容。

示例:qwerty 123456 ;,.'[]?/ asd

结果:qwerty|||||||||||||||||asd

提前致谢。

3 个答案:

答案 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