【问题标题】:Selecting everything but the numbers inside square brackets and replace选择除方括号内的数字以外的所有内容并替换
【发布时间】:2012-04-19 01:42:14
【问题描述】:

就像标题说的那样,我正在尝试创建一些正则表达式来选择除方括号内的数字之外的任何内容。例如:

6483463456[1234]623235[456]783467546[789]67467467

我想将方括号内的数字以外的所有内容都替换为空(只留下括号内的数字)。我想要这个:

[1234][456][789]

这是我目前所拥有的,但它不起作用:

[^\[.*\]]

上面的代码单独查找数字,包括括号内的数字。

\[(.*?)\]

上面的代码什么也没做,但看起来是对的。

我接近了吗?

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    您需要提取方括号周围的数字,然后只捕获方括号之间的数字(连同括号)以去除其余部分。

    此外,要仅匹配数字,您应该使用\d 而不是.

    查找:

    \d*(\[\d*?\])\d*
    

    全部替换为:

    \1
    

    【讨论】:

    • 第一个几乎对我有用。问题是它是这样设置的:6483463456[1234]623235[456]783467546[789]67467467 我想把所有东西都放在方括号内
    • 你想要的结果是什么?你想要1234456789 还是[1234][456][789]
    • 谢谢,但这似乎对我不起作用。 “找不到文字”
    • 也许您使用的是旧版本的 Notepad++?
    【解决方案2】:

    假设字符串的形式永远不会改变:

    • 任何地方都没有空格
    • 所有字符都是数字

    那么你可以使用:

    (\d*)\[(\d*)\](\d*)
    

    这将捕获所有三个组,因此您可以将整个匹配替换为第二组(括号内的数字)。

    【讨论】:

    • 这段代码似乎像这样捕获它:[1234]53636454534673[5678] 它突出显示替换:[1234]53636454534673
    • 使用它意味着第 1 组将没有匹配项,第 2 组将有 12345678,而 53636454534673 将在第 3 组中捕获。
    猜你喜欢
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多