正则表达式匹配除两个不同元素之外的所有内容

问题描述 投票:0回答:1

在此示例文本中,我需要提取城市和日期,但由于我是从 ITSM 工具运行它,所以我只能访问 regexReplace 函数,这意味着我需要一个匹配 这两个元素之外的所有内容的正则表达式

First line of text

Second line I only need the last word before the dot London.

Here i only want the date 11-11-2023.

Goodbye

我能够将除日期之外的所有内容与

[^\d-]
匹配。

为了匹配城市名称,我得到了这个:

\w+(?=\.)
,但也匹配年份(上面示例中的 2023 年)。由于城市单词来自 5-6 个可能城市的已知列表,因此类似
London|Rome|Paris|Lima
的内容可以使用,但仍然需要一种方法来“反转”匹配。

期望的输出是

London - 11-11-2023
regex regex-negation
1个回答
0
投票

假设您有前瞻性支持:

消极向前看(不是

abc
def
ghi

^(?!.*(abc|def|ghi)).*

正向前看(必须匹配

abc
def
ghi
中的任何一个)

^(?=.*(abc|def|ghi)).*

所以,就你而言:

^(?!.*([[0-9-]\.$))(?=.*([A-Za-z]+\.$)).*

这意味着最后一个

.
之前不能包含一个或多个整数,最后一个
.
之前必须包含字母(大写(可选)和小写)。

© www.soinside.com 2019 - 2024. All rights reserved.