gpt4 book ai didi

java - 正则表达式: Matching a string until certain characters

转载 作者:行者123 更新时间:2023-12-02 04:16:48 25 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式,该表达式应显示一个字符串,直至找到空格后跟连字符“-”的部分。如果找不到此模式,则应显示整个字符串。字符串中可以有其他空格或连字符。

以下正则表达式适用于大多数字符串值,其中所需的部分被捕获在 $1 中:

^([^ ]+[^-]+)( -).+

输入字符串并在上述正则表达式的第 1 组中进行匹配 -

  • 伦敦-巴黎 东京 --> 伦敦-巴黎
  • 伦敦马德里 - 巴黎-柏林-罗马 - 东京 --> 伦敦马德里
  • 伦敦巴黎 - 柏林东京 --> 伦敦巴黎
  • 伦敦巴黎 --> 伦敦巴黎

但是,上述正则表达式与以下情况不匹配:

  • 伦敦巴黎(某些文本)- 柏林/东京

我尝试了正则表达式的一些变体,也带有负向前瞻,但无济于事。

如有任何帮助,我们将不胜感激!谢谢

编辑: 感谢大家提供有用和解释性的建议,但是下面@Vince 的答案非常适合我的需求。我在下面添加了评论

最佳答案

我会使用非贪婪的量词并在其后进行双重检查,可以是空格后跟连字符,也可以是行尾:

#!/usr/bin/env perl

use warnings;
use strict;

while (<DATA>) {
m/^(.*?)(?:\s+-|$)/ && print "$1\n";
}

__DATA__
London-Paris Tokyo
London Madrid - Paris-Berlin-Rome - Tokyo
London Paris - Berlin Tokyo
London Paris
London Paris (some-text) - berlin/tokyo

它产生:

London-Paris Tokyo
London Madrid
London Paris
London Paris
London Paris (some-text)

关于java - 正则表达式: Matching a string until certain characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18587693/

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