Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用其他数字从网站中提取数字列_Regex - Fatal编程技术网

Regex 使用其他数字从网站中提取数字列

Regex 使用其他数字从网站中提取数字列,regex,Regex,有这个网站http://dgpred.cbr.su.se/index.php?p=TMpred 生物化学家/生物信息学使用的。输入一个蛋白质序列后,你会得到如下结果: 在顶部和底部,中间的数据是4列,其中第四是我们想要的数据。我想从第四列中获取大量蛋白质序列的数字,然后输入Excel 我当前的工作流程Mac OS X是将所有内容复制到富文本文档中的TextEdit,按住alt键并拖动数字,以便只选择第4列中的数字,然后执行我的AppleScript: do shell script "pbpas

有这个网站http://dgpred.cbr.su.se/index.php?p=TMpred 生物化学家/生物信息学使用的。输入一个蛋白质序列后,你会得到如下结果:

在顶部和底部,中间的数据是4列,其中第四是我们想要的数据。我想从第四列中获取大量蛋白质序列的数字,然后输入Excel

我当前的工作流程Mac OS X是将所有内容复制到富文本文档中的TextEdit,按住alt键并拖动数字,以便只选择第4列中的数字,然后执行我的AppleScript:

do shell script "pbpaste | sed 's/[^0-9.-]//g' | pbcopy"
do shell script "pbpaste | sed '/^$/d' | pbcopy"
我只是一个正则表达式的初学者,但这成功地为我留下了一个由换行符分隔的数字列表,可以粘贴到excel中


真正甜蜜的做法是放弃文本编辑步骤,让正则表达式直接从网站获取数字。然而,这超出了我的水平。有人能帮我吗?也就是说,复制此数据时,仅选择第4列中的数字,我得到以下结果:

R   1   -9.00           
       +0.03
G   2   -8.00           
       +0.36
F   3   -7.00       
-0.26  
每奇数行上有3列,以[a-Z]开头,然后在下一行上显示所需的数据

您想要的数字有两种形式:

^\t {3}([-+][0-9]+\.[0-9]{2})$  //for the red numbers
以及:

您可以这样提取这两种类型:

^(\t {3})?([-+][0-9]+\.[0-9]{2})( {3}\t)?$
第二个捕获组[-+][0-9]+[0-9]{2}是您要查找的内容:

s/^(\t {3})?([-+][0-9]+\.[0-9]{2})( {3}\t)?$/$2/g

而不是Apple脚本,考虑BBEDIT或,您可能会发现更容易使用。 将其放入搜索字段:

\r[A-Z].*\r(\t {3})?([-+][0-9]+.[0-9]{2})( {3}\t)?$
而这在替换中:

\r\2

选择全部替换

工作原理

 \r        //  carriage return
 [A-Z]     //  any character from A to Z (the lines you DON't want all start with a letter)
 .         // any character
 *         // any number of times
 \r        // carriage return   
           // that deals with the lines you DON't want to keep
 (         // grouping
 \t        // tab character
  {3}      // space character repeated 3 times
 )         // close grouping
 ?         // zero or one occurences of the previous grouping
 (         // grouping (this is the bit you are after)
 [+-]      // character class - one of any of the [enclosed characters]
 [0-9]     // one of any of 0-9
 +         // repeated one or  more times
 \.        // full stop (escaped as it has special meaning in regext)
 [0-9]{2}  // exactly two occurences of any of 0-9
 )         // close capture parens (end of the group you are after)
 ( {3}\t)? // 3 spaces followed by a tab, occurring 0 or 1 time.
 $         // end of line  (in BBEdit/textwrangler you often use \r)

重要细节在BBE/TW中,捕获的组被称为\1、\2、\3,而不是$1、$2、$3…

我注意到浏览器复制表的方式不同。当我想从网页复制表数据时,我倾向于尝试IE/Chrome/Opera浏览器,因为至少在Windows上,我可以简单地将复制的表直接粘贴到Excel中,保留所有列。另一方面,Firefox往往会把桌子弄得一团糟

使用Opera复制有问题的表格并从单元格A1粘贴到Excel中,我得到F列中的所有绿色数字和H列中的红色数字。然后我在第1行右侧的一列中键入以下公式,并向下拖动单元格的角以复制后续行:

=IF(AND(ISBLANK(F1), ISBLANK(H1)), "", IF(ISBLANK(F1), H1, F1))
现在在这个新专栏中,我看到了数据。我可以在原始数据上粘贴一个新表,然后右边的公式会重新计算。其他浏览器的实际列可能不同


我承认这不是一个完全自动化的解决方案,但我发现这种方法在很多情况下都是快速和有用的,所以我觉得值得分享。座右铭是:如果你选择的浏览器一开始做得不对,那就换一个吧

所以你想提取Delta G aai应用程序列,对吗?哇,你很擅长这个。不幸的是,我不是。请问你是怎么办到的?我试图制作一个applescript,这是我所知道的在剪贴板中的文本上运行正则表达式的唯一方法,但它给了我一个语法错误,我不知道applescript的情况——它将在perl或BBEdit的搜索字段中运行。你可能会喜欢BBEdit的精简版,-我认为它是免费的。它将执行grep搜索,并跨文件批进行搜索。@user1461829,请参阅我的更新答案,以及与BBEdit/TextwranglerHuge一起使用的精确说明,谢谢。Applescript可以让我直接从web浏览器转到Excel,而无需在两者之间进行文本编辑。但是,很多时候我在让它们运行时遇到问题。我试过TextWrangler,我真的很喜欢它。你的代码工作得很完美。您的代码中有一些空行,但我刚刚做了一个\r\r\r替换来修复它。然后我开始在TextWrangler中录音,运行查找和替换,现在我变得完美了output@user1461829很高兴它起作用了。抱歉,我以为你有一些手动步骤将所有内容复制到文本编辑。。。。不管怎样,当解决方案奏效时,你能接受答案吗?点击勾号谢谢。真的很感激这个公式。在这种情况下,这对我来说不是一个理想的解决方案,但我有很多类似的情况,这个公式会非常适合我。谢谢
=IF(AND(ISBLANK(F1), ISBLANK(H1)), "", IF(ISBLANK(F1), H1, F1))