Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式匹配只有一个C的字符串_Java_Regex - Fatal编程技术网

Java 正则表达式匹配只有一个C的字符串

Java 正则表达式匹配只有一个C的字符串,java,regex,Java,Regex,我正在寻找一些关于如何使用字符串的提示,如: KIGABCCA TQABCCAXT GABCCASZYU GZTTABCCA MHNBABCCA CLZGABCA ABCCALZH ABCCADQRNS VIZABCCA GABCCAG UEKABCCA KBTOABCCA GABCCAMFFJ HABCCAISOJ OFJJABCCA HPABCCA WBXRABCCA ABCCAKH VABCCAJX WBDOABCCA ABCCAWM GCABCA QHRAB

我正在寻找一些关于如何使用字符串的提示,如:

KIGABCCA TQABCCAXT
GABCCASZYU GZTTABCCA    MHNBABCCA   CLZGABCA    ABCCALZH
ABCCADQRNS VIZABCCA GABCCAG
UEKABCCA KBTOABCCA  GABCCAMFFJ  HABCCAISOJ  OFJJABCCA   HPABCCA
WBXRABCCA
ABCCAKH
VABCCAJX WBDOABCCA ABCCAWM GCABCA   QHRABCCA
ABCCAMDDD   WPABCCAD    OGABCCA
TVABCCA JGLABCA
IUABCCA
并返回任何只包含一个C的整个字符串

请注意:我不是在寻找解决方案

只是一些指针或我应该看到的构造类型的描述

我为这件事辛劳了好长时间,差点因此而伤害到别人。这是一个家庭作业问题,我不想作弊,只是一些指导

我已经广泛阅读了关于Reg Ex的内容,并且我理解它们。


我不是在找初学者指南

首先要在开始和结束处放置单词边界。然后将任何非C字符或单词边界匹配0次或更多次,然后是C字符,然后再次将任何非C字符或单词边界匹配0次或更多次。因此,它将自己匹配一个C,或者将一个C与任意一个(或两个)非C字符进行匹配


no-C或单词边界可以通过两种方式实现。。。说“任何不是C或单词边界的字符”,或者你可以说“我想要a、B或D-Z中的任何字符”。由您决定。

按顺序搜索包含以下元素的图案:

  • 字符串或任何空格的开头
  • 零个或多个非空白非C字符
  • A“C”
  • 零个或多个非空白非C字符
  • 字符串的结尾或任何空格

  • 您可以创建一个计数函数。然后将每个字符串传递给它。只是一个例子

    String string = "KIGABCCA"
    public static boolean countChar(String string, char ch){
         int count =0;
         for(int i = 0; i<string.length();i++){
            if(string.charAt(i) == ch ){
              count++;
            }
         }
         if ( count == 1){ 
           return true;
         }else {
           return false;
         }
    }
    
    String String=“kigabca”
    公共静态布尔countChar(字符串,char ch){
    整数计数=0;
    
    对于(int i=0;iIs)这是一个带空格的大字符串?这是正确的。解决方案应该返回不带空格的字符串。您的老师(?)请您专门使用正则表达式执行此操作?如果是,什么平台?@maaartinus他说这是作业。@maaa,如果您阅读了问题,他会说这确实是作业。OP表示他不想要解决方案,但需要一些指导和对他需要的构造的描述。您已经为他解决了问题。我正在使用
    模式p=pattern.compile(“\b[^C\b]*C[^C\b]*\b”);Matcher m=p.Matcher(data);
    …但它似乎没有组。对于发布“解决方案”,我深表歉意。当我发布时,我认为它不完整,还有一些我没有想到的东西,但事实上,它确实看起来很完整。我编辑时希望@AlexW没有看到原文,但他在我编辑时带着回复进入了那里。@AlexW,尝试第二个选项“无C或单词边界”,并取出所有的\b,因为它们不再需要了。在字符类中,
    \b
    匹配一个退格字符。这并不是说任何人都想匹配退格,但它不能执行其通常的角色,因为单词边界是零宽度断言,而字符类始终只匹配一个字符。我认为你想要的是
    [^C\W]*
    ——不是
    C
    ,也不是一个非单词字符。你知道,我写过这个…原则上它是有效的,但实际上我遇到了问题…谢谢你的帮助tips@AlexW,实际的正则表达式(作为Java字符串文本)将是
    “(\\a |\\s)[^C\\s]*C[^C\\s]*(\\s |\\z)”
    --这就是你尝试过的吗?你是在使用
    find()
    方法来应用正则表达式吗?@Alan-我已经根据SO的提示对它进行了排序。我现在也在使用find()。非常感谢。请留下一个答案,我可以标记为正确吗?