用于从字符串中删除除“a”和“i”之外的所有单个字母的 Java 正则表达式 [关闭]

Posted

技术标签:

【中文标题】用于从字符串中删除除“a”和“i”之外的所有单个字母的 Java 正则表达式 [关闭]【英文标题】:Java regex for removing all single letters except "a" and "i" from string [closed] 【发布时间】:2018-06-14 15:12:57 【问题描述】:

我有一个像

这样的文本字符串
"there i r u w want to y z go because f g of a matter"

我想删除除“a”和“i”之外的所有单个字母。 所以上面给出的示例字符串就像

there i want to go because of a matter

除去“a”和“i”之外的所有这些单个字母的java正则表达式是什么?

【问题讨论】:

这个\b[b-hj-z] 或` [b-hj-z](?= )`? 我不知道,我想用正则表达式替换所有 我投了反对票,因为“给我 teh codez”/“为我做我的工作。” 【参考方案1】:

代码

See regex in use here

(?:^| )[b-hj-z](?= |$)

用法

See code in use here

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class Ideone

    public static void main (String[] args) throws java.lang.Exception
    
        final String regex = "(?:^| )[b-hj-z](?= |$)";
        final String string = "there i r u w want to y z go because f g of a matter";
        final String subst = "";

        final Pattern pattern = Pattern.compile(regex);
        final Matcher matcher = pattern.matcher(string);

        // The substituted value will be contained in the result variable
        final String result = matcher.replaceAll(subst);

        System.out.println("Substitution result: " + result);
    

如果您需要不区分大小写的匹配,请将Pattern.CASE_INSENSITIVE 传递给Patter.compile


结果

输入

there i r u w want to y z go because f g of a matter

输出

there i want to go because of a matter

说明

(?:^| ) 在行首声明位置或匹配空格 [b-hj-z] 匹配除ai 之外的任何小写ASCII 字母 (?= |$) 正向前瞻确保后面是空格或行尾

【讨论】:

哇,是的,它有效,非常感谢你:) @zoric99 你可以接受它作为答案:)【参考方案2】:

删除除“a”和“i”之外的所有单个字母的工作示例代码

String resultStr = "there i r u w want to y z go because f g of a matter".replaceAll("(?:^| )[b-hj-z | B-HJ-Z](?= |$)", "");

解释:

【讨论】:

以上是关于用于从字符串中删除除“a”和“i”之外的所有单个字母的 Java 正则表达式 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从字符串中删除非数字字符(不包括句点和逗号)(即删除除数字、逗号和句点之外的所有字符)

从 PHP 中的字符串中删除除字母数字字符之外的所有内容

如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容?

如何从python中的unicode字符串中删除除数字和“,”之外的所有字符?

从 Python3.3 中的字符串中删除除字母和空格之外的所有内容

JavaScript:如何从 JSON 字符串中删除除值中的空格之外的所有空格?