寻找带正则表达式的字符串并删除整行

时间:2013-11-05 13:32:39

标签: regex textpad

我试图在Textpad中找到一个带有正则表达式的字符(例如“#”),如果找到它,则应该删除整行。 #不是在行的开头,也不在末尾,而是介于两者之间,并且没有连接到另一个单词,数字或字符串 - 它与左右空白单独存在,但当然其余部分包含单词和号。

示例:

My first line
My second line with # hash
My third line# with hash

结果:

My first line
My third line# with hash

我怎么能做到这一点?

3 个答案:

答案 0 :(得分:4)

让我们分解一下:

^     # Start of line
.*    # any number of characters (except newline)
[ \t] # whitespace (tab or space)
\#    # hashmark
[ \t] # whitespace (tab or space)
.*    # any number of characters (except newline)

或,在一行中:^.*[ \t]#[ \t].*

答案 1 :(得分:1)

试试这个

^(.*[#].*)$

Regular expression visualization

Debuggex Demo

或者

(?<=[\r\n^])(.*[#].*)(?=[\r\n$])

Regular expression visualization

Debuggex Demo

答案 2 :(得分:0)

编辑:改变以反映蒂姆的观点

这个

public static void main(String[] args){
    Pattern p = Pattern.compile("^.*\\s+#\\s+.*$",Pattern.MULTILINE);

    String[] values = {
        "",
        "###",
        "a#",
        "#a",
        "ab",
        "a#b",
        "a # b\r\na b c"
    };
    for(String input: values){
        Matcher m = p.matcher(input);
        while(m.find()){
            System.out.println(input.substring(m.start(),m.end()));
        }

    }
}

给出输出

a # b