2

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

例子:

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

结果:

My first line
My third line# with hash

我怎么能做到这一点?

4

3 回答 3

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].*

于 2013-11-05T13:37:41.433 回答
1

尝试这个

^(.*[#].*)$

正则表达式可视化

调试演示

或者可能

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

正则表达式可视化

调试演示

于 2013-11-05T13:37:29.513 回答
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
于 2013-11-05T13:42:17.010 回答