RegEx用于匹配除换行符和特殊字符以外的所有内容

时间:2019-05-18 16:56:32

标签: regex string regex-negation regex-group regex-greedy

我正在处理一个硬件问题,该问题涉及从html代码的文本中删除所有html标签“ <...>”,然后计算该文本中的所有标记。

我写了一个可行的解决方案,但是全部归结为我实际上并未编写的一行代码,我很想了解更多有关这种代码如何工作的信息。

public static int tagStrip(Scanner in) {
     int count = 0; 

     while(in.hasNextLine()) {
         String line = in.nextLine();

         line = line.replaceAll("<[^>\r\n]*>", "");

         Scanner scan = new Scanner(line);

         while(scan.hasNext()) {
            String word = scan.next();
            count++;
         }
     }
     return count;
}  

第7行是我很好奇的。我了解replaceAll()方法的工作方式。我不确定字符串“ <[^> \ r \ n] *>”的工作方式。我读了一些有关模式的内容,并弄乱了一些。
我用“ <[^>] +>”替换了它,但它仍然完全一样。因此,我希望有人能够解释这些字符的工作原理,以及它们在做什么,尤其是在此类程序的构造中。

1 个答案:

答案 0 :(得分:0)

RegEx

如果您希望探索或修改表达式,可以在regex101.com中修改/更改表达式。

<[^>]+>可能不起作用,因为它会通过您的新行,这似乎是不希望的。

enter image description here

RegEx电路

您还可以在jex.im中可视化您的表达式:

enter image description here