【问题标题】:Regex Get Value before string or number正则表达式在字符串或数字之前获取值
【发布时间】:2021-09-07 00:53:45
【问题描述】:

我想问一下,单词后面有没有可能得到数字或字符串。 例如

Abc ddd 1 0.4 44 USD 99 00 99
cc gg 1 0.4 445 66 USD 100 00 999
bb dd xx cc 56 78 99 65 35.45 USD 99 00 88 66 99

输出目标是美元之前的任何值

44
66
35.45

表示美元之前的任何值。

尝试使用以下代码但无法获取

(?<=USD\s\d+)\S+

【问题讨论】:

  • 果酱,下面的解决方案有帮助吗?

标签: regex regex-negation


【解决方案1】:

您的正则表达式尝试用USD + 一个空格+ 一个或多个数字匹配一个或多个紧接在前面的非空白字符。但是,您需要获取USD 子字符串左侧的数字

您可以在此处使用基于前瞻的解决方案:

\d+(?:\.\d+)?(?=\s+USD\b)

请参阅regex demo

详情

  • \d+(?:\.\d+)? - 一个或多个数字后跟一个可选的点序列和一个或多个数字
  • (?=\s+USD\b) - 积极的前瞻确保有
    • \s+ - 一个或多个空格字符
    • USD\b - 和一个 USD 子字符串作为一个完整的单词(因为 \b 是一个单词边界)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 2012-04-08
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    相关资源
    最近更新 更多