1

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

我的问题是,我有以下一组数据,我想摆脱“名称”。

  1. 姓名的问题例如约翰的问题,鲍勃的问题
  2. 信息 - 姓名例如信息 - 朱莉,信息 - 理查德,信息 - 大卫
  3. 选择
  4. 提交

正如我们所见,“姓名”仅出现在几条记录中,而其他记录中则没有。

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

  1. (Question*(.*?))
  2. (Information*(.*?))

问题是我只得到“问题”记录,系统没有显示其他三个记录。

我发现问题是,当我将正则表达式测试为 时(Question*(.*?)),它确实在第一个示例中摆脱了“名称”,但在其他三个示例中它没有返回任何内容。我的意思是它返回是空白的。因此,当系统解析“提交”时,在“问题”正则表达式的第一次转换中,它没有找到“问题”词,因此它不返回任何内容。

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

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

PS:'Select'和'Submit'只是两个例子,至少还有20-25条其他记录,但只有两条记录有' Name '。

4

1 回答 1

1

你可以使用这样的正则表达式。因为它是“或”,所以匹配总是匹配组 1。(假设您执行“每行一个匹配”)

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

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

正则表达式可视化

调试演示

于 2013-09-20T17:11:30.980 回答