gpt4 book ai didi

java - 使用正则表达式提取子字符串,但如果字符串与正则表达式不匹配则保留它

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:35 25 4
gpt4 key购买 nike

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

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

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

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

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

  1. (问题*(.*?))
  2. (信息*(.*?))

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

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

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

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

PS:“选择”和“提交”只是两个例子,至少还有 20-25 条其他记录,但只有两条记录中有“Name”。

最佳答案

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

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

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

Regular expression visualization

Debuggex Demo

关于java - 使用正则表达式提取子字符串,但如果字符串与正则表达式不匹配则保留它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18921874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com