我有这个字符串:
" abalbal asldad 23 sadaskld 3123 adasdas "
Run Code Online (Sandbox Code Playgroud)
如何只匹配单词,没有数字.. " \D* "
我只能匹配前两个,没有其他...
my @matches = ($result =~ m/INFO\n(.*?)\n/);
Run Code Online (Sandbox Code Playgroud)
所以在Perl中我想将所有匹配存储到该正则表达式中.我希望每次发生时将值存储在INFO \n和\n之间.
但我只是存储了最后一次.我的正则表达式错了吗?
这是交易.有没有办法让基于多个正则表达式的行中的字符串标记?
一个例子:
我必须根据不同的正则表达式获取所有href标签,相应的文本和其他一些文本.所以我有3个表达式,并且想要对行进行标记并提取与每个表达式匹配的文本标记.
我实际上是使用flex完成的(不要与Adobe混淆),这是一个很好的老lex的实现.lex通过基于表达式执行"actions"来提供一种优雅的方法.人们也可以控制lex读取文件的方式(基于块/行的读取).
问题是flex实际上产生的C/C++代码实际上是标记化工作.我有一个包含所有这些东西的make文件.我想知道perl/python是否能以某种方式做同样的事情.它只是我想用一种编程语言本身做我喜欢的一切.
令牌化只是我想要在我的应用程序中执行的操作之一.
除了perl或python之外,任何语言(功能也可以)都可以这样做吗?
我在这里读过关于PLY和ANTLR的内容(解析,我在哪里可以了解它).
但有没有办法在python本身自然地做到这一点?请原谅我的无知,但这些工具是否适用于任何受欢迎的产品/服务?
谢谢.
我在Perl中搜索一个字符串并将其存储在另一个标量变量中.我想打印这个标量变量.下面的代码似乎不起作用.我不确定出了什么问题,以及正确的方法是什么.为什么在程序中不存在时打印"1"?
正在运行的数据
数据
13 E 0.496 -> Q 0.724
18 S 0.507 -> R 0.513
19 N 0.485 -> S 0.681
21 N 0.557 -> K 0.482
Run Code Online (Sandbox Code Playgroud)
以下是我的代码:
#!/usr/bin/perl
use strict;
use warnings;
my $find = '\s{10}[0-9]{2}\s[A-Z]'; #regex. it can also be '\s{10}[0-9]{2}\s[A-Z]'
#both dont seem to work
my @element;
open (FILE, "/user/run/test") || die "can't open file \n";
while (my $line = <FILE>) {
chomp ($line);
print "reached here1 \n"; # to test whether it reading the program properly …
Run Code Online (Sandbox Code Playgroud)