gpt4 book ai didi

来自字符串的正则表达式数字

转载 作者:行者123 更新时间:2023-12-01 12:28:58 25 4
gpt4 key购买 nike

我正在尝试编写一个只能从给定字符串中查找数字的正则表达式。我的意思是:

输入:我的号码是+12 345 678。我有galaxy s3,它的符号是34abc。

输出:345678(但不是 +123 来自单词 s334 来自 34abc)

我只尝试了数字 (\d+) 和我与白色和文字字符的组合。最接近的是 ^\d$ 但这不起作用,因为我的数字是较大字符串的一部分,而不是整个字符串本身。你能给我一个提示吗?

-------- 编辑

看起来我只是不知道如何在不实际得到结果的情况下检查一个字符。就像“空格字符后面的数字(没有这个空格)”。

最佳答案

一般情况下,您可以使用lookbehind and lookahead :

(?<=^|\s)\d+(?=$|\s)

进入捕获输出的部分是\d+ .Lookbehind 和 Lookahead 不包括在比赛中。

我只是在正则表达式中包含空格作为分隔符,但您可以替换 \s根据您的要求定义的任何字符类。例如,要允许点作为分隔符(数字前后),请使用以下正则表达式:

(?<=^|[\s.])\d+(?=$|[\s.])

(?<=^|\s)应该这样理解:

  • (?<= ... )定义lookbehind 组。
  • 必须在 \d+ 之前的表达式是^|\s ,意思是“行首 ( ^ ) 或空格”。

同样,(?=$|\s)定义 lookahead 组(它必须跟在捕获的数字之后),它是行尾 ( $ ) 或空格。


关于 \b 的注释在其他答案中提到:这是一个很好的功能,意思是“单词边界”,但“单词字符”不可自定义。这意味着,例如,“+”字符被视为分隔符,如果您使用 \b 则无法更改它。 .通过环顾四周,您可以根据需要自定义分隔符。

关于来自字符串的正则表达式数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36533632/

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