当前位置: 首页 > 知识库问答 >
问题:

如何通过匹配已知的关键字集来提取子字符串[重复]

东方文林
2023-03-14

例如,尝试在特定代码后提取子字符串

String sample1 = "/ASDF/096/GHJKL/WER/WER/dv/7906/CODEM/TEAR1331927498xxxxxx/YUII/OPL";
String sample2 = "/CODEM/TEAR1331927498xxxxxx";

String regExpresssion = "[/CODEM/]{6}(^[a-zA-Z0-9|\\s])?";
final Pattern pattern = Pattern.compile(regExpresssion);
final Matcher matcher = pattern.matcher(sample1);
if (matcher.find()) {
  String subStringOut = sample1.substring(matcher.end());
}

subStringOut for sample 1  > TEAR1331927498xxxxxx/YUII/OPL
subStringOut for sample 2  > TEAR1331927498xxxxxx

上面的代码工作正常,但现在我需要在下面的示例的正则表达式中再添加一个标识符“/CODER/”

String sample3 = "/ASDF/096/GHJKL/WER/WER/dv/7906/CODER/TEAR1331927498xxxxxx/YUII/OPL";

我试过了

String regExpresssion = "[/CODEM/|/CODER/]{6}(^[a-zA-Z0-9|\\s])?"; 

但这不起作用。伙计们有什么建议吗?

谢谢

共有2个答案

孙星鹏
2023-03-14

只需一次查看assersun
尝试(?

PCRE demo
但在这种情况下适用于Java

江新
2023-03-14

试着用/code[RM]/

我想你的意思是匹配整个短语 /CODEM/或 /CODER/,但是因为你写的方式,你接受了这些字符中6个字符长的任何序列。不过我不完全确定。括号代表一个“字符类”,它们只匹配一个字符,如果你想在一行中匹配多个,你可以使用括号。第二部分对我来说也没有意义,因为指数符号在短语的中间,在这个上下文中,它匹配一行的开头。

 类似资料:
  • 比如说我有这个: 我想做两件事: 1) 使其成为当且仅当用户准确键入<代码>时!测试和其他内容,它将在通道中打印出测试 2)使其成为如果用户键入首先后跟空格和至少一个其他字符串字符,它将打印出——例如:a)不会打印出任何东西,b)(后跟一个空格)不会打印出任何东西,c)不会打印出任何东西,d)不会打印出任何东西,但是e)将打印出, f)将打印出, g)将打印出, and h)将打印出等。 我只知道

  • 问题内容: 我想在API中提供自动字符串格式,例如: 可以替换为格式化字符串中标注的属性值。 如何从Python格式字符串中提取关键字参数: 问题答案: 您可以使用类的一个字符串,解析出的领域,与方法: 演示: 您可以进一步解析这些字段名称。为此,您可以使用方法(Python 2)/函数(Python 3)(此内部实现细节未公开;在内部使用)。此函数返回名称的 第一部分 ,将在传递给的参数中查找该

  • 我搜索了与Java正则表达式相关的问题,并找到了关于模式和匹配器类的信息,以获得关于reg-ex匹配条件的一组文本。 但是,我的要求不同,我希望提取正则表达式所表示的实际文本。 例: 使用Pattern和Matcher类(或Java中的任何其他方式),如何获得文本“22”?这是正则表达式所代表的文本。

  • 我正在写一个应用程序,根据该应用程序,你将被发送一条短信,其中包含一个重置代码,以确认你是该帐户的所有者。。但是我正在尝试以这样一种方式构建应用程序:它接收接收到的短信的广播,并仅从短信正文中获取指定的整数。我们注意到你想要重置密码的短信示例。密码重置代码是3242。,谢谢 我只想从整个短信正文中获取重置代码=3242。。谢谢

  • 假设我有一个字符串,如下所示: 我想把“abcd”换成“dddd”。我曾试图做这样的事: 它不起作用。有什么建议吗? 编辑:更具体地说,我在Java工作,我试图解析超文本标记语言文档,具体地说