[英]Extract substring using Regex, but if string doesn't match Regex then retain it
对于这里的大师来说,这听起来像是另一个简单的正则表达式,但是现在确实让我头痛不已:)
我的问题是,我有以下数据集,但我想摆脱“名称”。
如我们所见,“名称”仅存在于几条记录中,而在其他记录中则没有。
我创建了两个正则表达式。 我正在使用一个内部使用JAVA解析正则表达式的应用程序。 我不能编写自己的Java代码,只能提供正则表达式。 :(
(Question*(.*?))
(Information*(.*?))
问题是我仅获得“问题”记录,而系统未显示其他三个记录。
我发现问题是,当我将正则表达式测试为(Question*(.*?))
,它在第一个示例中确实摆脱了“名称”,但是在其他三个示例中它不返回任何内容。 我的意思是返回空白。 因此,当系统解析“提交”时,在“问题”正则表达式的第一个转换中,它找不到“问题”字词,因此不会返回任何内容。
我想拥有的是,如果“问题”不可用,那么系统应该返回完整的字符串而不是将其删除。 因此,当系统在第一个正则表达式中解析“ Submit”时,应按原样返回“ Submit”。
我不知道我的正则表达式是否正确
PS:“选择”和“提交”只是两个示例,还有至少20-25个其他记录,但是只有两个记录中包含“ 名称 ”。
您可以使用这样的正则表达式。 由于它是“或”,因此匹配始终会是MatchGroup1。(假设您执行“每行一个匹配”)
正则表达式本身将匹配整个字符串,但“第一匹配组”将仅包含您的关键字。
(?:.*?(Question)|(Information).*?|(Select|Submit))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.