对于这里的大师来说,它可能听起来像另一个简单的正则表达式,但它现在让我头脑疼痛:)
我的问题是,我有一组数据,我想摆脱'名字'。
正如我们所看到的,“姓名”仅存在于几个记录中,而不存在于其他记录中。
我创建了两个正则表达式。我正在使用一个内部使用JAVA来解析Regex的应用程序。我不能写自己的java代码,我只能提供正则表达式。 :(
(Question*(.*?))
(Information*(.*?))
问题是我只收到“问题”记录而系统没有显示其他三个记录。
我发现问题是,当我将正则表达式作为(Question*(.*?))
进行测试时,它确实在第一个示例中删除了“名称”,但是在其他三个示例中它没有返回任何内容。我的意思是它回归空白。因此,当系统解析“提交”时,在“问题”正则表达式的第一次转换中,它没有找到“问题”字,因此它不会返回任何内容。
我想要的是,如果“问题”不可用,那么系统应返回完整字符串而不是删除它。因此,当系统在第一个正则表达式中解析“提交”时,它应该按原样返回“提交”。
我不知道我的正则表达式是不正确的
PS:'选择'和'提交'只是两个例子,其他记录至少有20-25个,但只有两个记录中有' Name '。
答案 0 :(得分:1)
您可以使用这样的正则表达式。 由于它是“或”,因此匹配将始终为MatchGroup 1.(假设您执行“每行一场比赛”)
正则表达式本身将匹配整个字符串,但第一个匹配组将只包含您的关键字。
(?:.*?(Question)|(Information).*?|(Select|Submit))