有没有办法用ReGex读取文件中所有行的第一个字?

2024-09-29 19:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在查看任何txt文件来解析特定信息。信息是文件室的名称、坐标x和坐标y。文件室的名称可以是任何字符串名称(abc6a7b8c_test1n6_,等等),并且不包括“#”,因为这样它将成为我的错误管理的一部分。为了更详细地解释txt文件,我希望总是忽略第一行,在第一行之后,是在x和y坐标中创建的房间(例如2 5 0有一个名为2的房间,坐标为(5,0))。我没有从文件中得到所需的所有行字符串。例如,我只得到以任何字符开头的字符串,而没有,但也得到了我现在不需要的字符串。我一天前才开始学Regex,所以请耐心点:)。你知道吗

我正在使用网站regexr来可视化和查看输出搜索。它的工作非常出色,但是我越是想到错误检查,我的正则表达式就变得越复杂。你知道吗

这是我现在的正则表达式:

\S+(\w+[0-9]) | \s+\w*[A-Z]

txt文件如下:

3
2 5 0
##start
0 1 2
##end
1 9 2
3 5 4
######################
###lol123
###1234124
#111shouldnotread#~!~
6ajhk 888 888 
D_c7 10 10
Enz4 11 11
Maf9 15 15
Eex5 18 18
U_e6 21 21
Nip5 25 25
Gw_5 28 28
Vio7 31 31
His7 34 34
Exh6 37 37
Iq_8 42 42
Qky2 45 45
Tac1 49 49
X__5 51 51
Xlb4 55 55
0-2
0-3
2-1
3-1
2-3

输出:

888 
888 
D_c7 
Enz4 
Maf9 
Eex5 
U_e6 
Nip5 
Gw_5 
Vio7 
His7 
Exh6 
Iq_8 
Qky2 
Tac1 
X__5 
Xlb4 

现在,我得到了我想要的一切,但还没有完全实现。你看,我有我的一些房间,但没有带"6ajhk"的房间,那是我房间的名字,坐标是(888, 888)。其余的已经分开处理了。谢谢你的时间和耐心。你知道吗


Tags: 文件字符串txt名称信息错误房间gw
2条回答

如果我正确理解了您的要求,那么这个正则表达式似乎可以做到:

/^\w*(?!\n)(?=\s)/gm

注意,我使用的是多行标志/m。你知道吗

你可以在这里测试:https://regexr.com/4arnh

编辑:如果不想包含一位数的房间名称,可以使用:

/^\w{2,}(?=[^\S\n])/gm

其中2是房间字符串中的最小字符数。演示:https://regexr.com/4arnq

我想这应该是你想要的。你知道吗

^([^\s#]{4,5}) (\d+) (\d+)

见:https://regex101.com/r/Kqakb8/2

相关问题 更多 >

    热门问题