Java 使用正则表达式提取子字符串,但如果字符串不';t匹配正则表达式,然后保留它

Java 使用正则表达式提取子字符串,但如果字符串不';t匹配正则表达式,然后保留它,java,regex,Java,Regex,对于这里的大师们来说,这听起来像是另一个简单的正则表达式,但它现在真的让我头疼:) 我的问题是,我有以下一组数据,我想去掉“Name” 姓名的问题,例如约翰的问题,鲍勃的问题 信息-名称,例如信息-朱莉,信息-理查德,信息-大卫 挑选 提交 正如我们所看到的,“Name”只出现在一些记录中,而不出现在其他记录中 我创建了两个正则表达式。我正在使用一个内部使用JAVA解析正则表达式的应用程序。我无法编写自己的java代码,我只能提供正则表达式:( (问题*(*?) (信息*(*?) 问题是我只得到

对于这里的大师们来说,这听起来像是另一个简单的正则表达式,但它现在真的让我头疼:)

我的问题是,我有以下一组数据,我想去掉“Name”

  • 姓名的问题,例如约翰的问题,鲍勃的问题
  • 信息-名称,例如信息-朱莉,信息-理查德,信息-大卫
  • 挑选
  • 提交
  • 正如我们所看到的,“Name”只出现在一些记录中,而不出现在其他记录中

    我创建了两个正则表达式。我正在使用一个内部使用JAVA解析正则表达式的应用程序。我无法编写自己的java代码,我只能提供正则表达式:(

  • (问题*(*?)
  • (信息*(*?)
  • 问题是我只得到“问题”记录,而系统并没有显示其他三个记录

    我发现问题是,当我以
    的形式测试正则表达式时(问题*(*))
    ,在第一个示例中,它确实去掉了“Name”,但在其他三个示例中,它不返回任何内容。我的意思是,它返回的内容为空。因此,当系统解析“Submit”时,在“Question”regex的第一次转换中,它找不到“Question”这个词,所以它不返回任何内容

    我想要的是,如果'Question'不可用,那么系统应该返回完整字符串,而不是删除它。因此,当系统在第一个正则表达式中解析'Submit'时,它应该返回原样的'Submit'

    我不知道我的正则表达式是否正确


    备注:“选择”和“提交”只是两个示例,至少有20-25条其他记录,但只有两条记录中有“名称”。

    您可以使用这样的正则表达式。 因为它是“或”,所以比赛将始终是第1组比赛。(假设您执行“每行一场比赛”)

    正则表达式本身将匹配整个字符串,但第一个匹配组将只包含关键字

    (?:.*?(Question)|(Information).*?|(Select|Submit))
    


    您可以使用这样的正则表达式。 因为它是“或”,所以比赛将始终是第1组比赛。(假设您执行“每行一场比赛”)

    正则表达式本身将匹配整个字符串,但第一个匹配组将只包含关键字

    (?:.*?(Question)|(Information).*?|(Select|Submit))
    


    Uhh.
    if(QUESTION_RE.matches(input)){/*进行替换或提取*/}else{return input;}
    。您可以在您知道的正则表达式周围使用代码(这可能不是最优雅的方法,只需将同一个RE匹配两次,但这样做就可以了。)我同意上面的说法,添加一些逻辑。谢谢@millimoose。实际上我使用的是一个只允许我输入Regex的工具。我无法编写自己的JAVA代码:(对不起,我应该在问题中提到。
    question*
    可能不是你想要的。这意味着字母
    Questio
    和零或更多
    n
    s。请发布示例的全文,以及你希望看到的内容。通过“选择”和“提交”很难理解你想要什么。嗯。
    (QUESTION_RE.matches(input)){/*执行替换或提取操作*/}否则{return input;}
    。您可以在您知道的正则表达式周围使用代码(这可能不是最优雅的方法,只需将同一个RE匹配两次,但它就可以完成这项工作)我同意上面的说法,添加一些逻辑。谢谢@millimoose。实际上我使用的是一个只允许我输入Regex的工具。我无法编写自己的JAVA代码:(对不起,我应该在问题中提到。
    question*
    可能不是你想要的。这意味着字母
    Questio
    和零或更多
    n
    s。请发布示例的全文,以及你希望看到的内容。通过“选择”和“提交”很难理解你想要什么.Thank@dognose…至少它将两个正则表达式合并为一个正则表达式起到了作用。:)然而,“Select”和“Submit”只是两个例子,大约有20到25条其他记录,因此不必特别在正则表达式中使用“Select”和“Submit”,是否可以更新正则表达式以返回所有其他记录?谢谢@dognose…它起了作用。我刚刚用(.*)替换了“Select”和“Submit”所有其他没有'Question'和'Information'的将返回完整字符串,对于'Question'和'Information',将删除'Names'…感谢您帮助解析并帮助将两个正则表达式合并为一个:)谢谢@dognose…至少将两个正则表达式合并为一个正则表达式是有效的。:)然而,“Select”和“Submit”只是两个例子,大约有20到25条其他记录,因此不必特别在正则表达式中使用“Select”和“Submit”,是否可以更新正则表达式以返回所有其他记录?谢谢@dognose…它起了作用。我刚刚用(.*)替换了“Select”和“Submit”所有其他没有'Question'和'Information'的将返回完整字符串,对于'Question'和'Information',将删除'Names'…感谢您帮助解析并帮助将两个正则表达式合并为一个:)