gpt4 book ai didi

regex - 在 Linux 终端中使用带有 egrep 的正则表达式查找数字

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:00 26 4
gpt4 key购买 nike

我想在 Linux 终端中使用 egrep 找到所有分隔的单词(这意味着两个空格之间的字符),它们是十进制数字,包括加号和减号。

我的解决方案:

(?<= |\n|\t)[\+\-]?[0-9]+(?= |\n|\t)

解释:

  • (?<= |\n|\t) 检查十进制数前是否有空格或换行符或制表符
  • (?= |\n|\t) 检查十进制数后是否有空格或换行符或制表符。

这段代码在我测试实现的 Kiki 0.5.6 程序中运行良好,但如果我将它复制到终端,它就不起作用。我认为终端不识别特殊的括号结构 (?=?<=) 。我对吗?如何申请到终端?

例如:我的文字:

1.fasfa
123asfavdsvdas156
1safsavdsvsd1sdva5s31as35d1va
595s6dva2sdvas9
asd9as5dv92s
sd559vs fs5s94 4dfs dfa4s44 459 9dasf 8sdfa 5sfa
napr. uNIveRziTA
sfaf 2262 2226 56565 adss
uNiVerZita
uNIVERZITa
123
123 sadasf 123456 sfafs 134
-1234- -25- -5- 5- --55
-
-55
123 100 999 124 6262 62 6 2 62 62 65 26565 22 62 62652 +665 +0649 ---662 265 959 595 099 199 -059 -0245 -444
--1245 -555-5-55 --555- 555-
+25
-55
+++55 +5 ++5 ++55+665+
samo samo samo samo otec otec skola skola samo lamo samo lamo
re20. (?<=(\t|\n| ))([+-])?[1-9][0-9]*(?= |$|\n)
--- ---
doma doma doma doma doma doma doma doma doma
meno.priezvisko@tuke.sk meno.priezvisko.1@tuke.sk meno.priezvisko@student.tuke.sk meno.priezvisko.2@student.tuke.sk

23:56:59.555
00:00:00.000
23:59:59.999

31/12/2099
00/12/2054
01/01/2000

匹配:

459
2262
2226
56565
123
123
123456
134
-55
123
100
999
124
6262
62
6
2
62
65
26565
22
62
62652
+655
+0649

最佳答案

egrep 不支持环视断言。但是,GNU grep 使用 -P 开关提供与 perl 兼容的正则表达式:

grep -oP '(?<=\s|^)[+-]?[0-9]+(?=\s|$)' input

请注意,您可以将 |\n|\t 简化为 \s,它代表 whitespace character。为了匹配行首开始的数字和行尾结束的数字,我添加了 ^$ 作为 的替代项\s.

关于regex - 在 Linux 终端中使用带有 egrep 的正则表达式查找数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33802409/

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