gpt4 book ai didi

java - 使用 java 计算所有构成有效命令的子字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:50:57 24 4
gpt4 key购买 nike

我正在尝试制作一个汇编语言解析器,并且我必须从给定的字符串中找到所有有效的命令。要使命令有效,必须满足以下条件:

  1. 首字母为小写英文字母
  2. 接下来,它包含以下零个或多个的序列
    字符:小写英文字母、数字、冒号。
  3. 接下来,它包含一个正斜杠 /
  4. 接下来,它包含以下零个或多个的序列字符:小写英文字母、数字。
  5. 接下来,它包含一个反斜杠 \
  6. 接下来,它包含一个或多个小写英文字母的序列。

例如给出命令 abc:/b1c\xy

有六个有效命令:

abc:/b1c\xy    
bc:/b1c\xy
c:/b1c\xy
abc:/b1c\x
bc:/b1c\x
c:/b1c\x

我对正则表达式一无所知,有人可以帮我吗。

最佳答案

请按照以下步骤解决您的问题。

第 1 步:我们需要按给定字符串的升序查找所有可能的子集。例如abc --> {a,b,ab,bc,abc} 递增。

第 2 步:现在我们必须检查您找到的字符串是否遵循正则表达式模式。致谢:我将使用 Varun Chaudhary 提供的正则表达式模式。

第 3 步:如果匹配,我将返回 1 并继续为字符串的所有可能有效子集添加计数。

第四步:打印结果。

import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Main
{
static int regexWork(String command) {

int count =0;
Pattern COMMAND_PATTERN = Pattern.compile("[a-z]{1}[a-z0-9:]*\\/[a-z0-9]*\\\\[a-z]+");
Matcher matcher = COMMAND_PATTERN.matcher(command);
//If matches returns 1
while (matcher.find())
count=1;

return count;
}


// Finding all subsets of given set[]
static void printSubsets(char set[])
{
int count =0;
int n = set.length;
// Pick starting point
for (int len = 1; len <= n; len++)
{
// Pick ending point
for (int i = 0; i <= n - len; i++)
{
StringBuffer sb = new StringBuffer();
// Print characters from current
// starting point to current ending
// point.
int j = i + len - 1;
for (int k = i; k <= j; k++)
sb.append(set[k]+"");

count+=Main.regexWork(sb.toString());
}
}

System.out.println(count);

}

// Driver code
public static void main(String[] args)
{

String set ="abc:/b1c\\xy"; //Can be any string for which you are checking
printSubsets(set.toCharArray()); //Passing char array
}
}

关于java - 使用 java 计算所有构成有效命令的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com