Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 PERL将任何非字母数字字符替换为_&引用;_Regex_Perl - Fatal编程技术网

Regex PERL将任何非字母数字字符替换为_&引用;

Regex PERL将任何非字母数字字符替换为_&引用;,regex,perl,Regex,Perl,在perl中,我想替换任何不是[A-Z]I或[0-9]的字符,并将其替换为“u”,但前提是该非字母数字字符出现在两个字母数字字符之间。我不想触摸字符串开头或结尾的非字母数字 s/(\p{Alnum})\P{Alnum}(\p{Alnum})/${1}_${2}/g; 我知道足够的正则表达式来替换它们,而不仅仅是在字符串中间替换它们。 s/(\p{Alnum})\P{Alnum}(\p{Alnum})/${1}_${2}/g; 当然,这会用“A#B%C”来伤害你的下疳,所以你可以用环顾一下:

在perl中,我想替换任何不是
[A-Z]I
[0-9]
的字符,并将其替换为“u”,但前提是该非字母数字字符出现在两个字母数字字符之间。我不想触摸字符串开头或结尾的非字母数字

s/(\p{Alnum})\P{Alnum}(\p{Alnum})/${1}_${2}/g;
<>我知道足够的正则表达式来替换它们,而不仅仅是在字符串中间替换它们。

s/(\p{Alnum})\P{Alnum}(\p{Alnum})/${1}_${2}/g;
当然,这会用“A#B%C”来伤害你的下疳,所以你可以用环顾一下:

s/(?<=\p{Alnum})\P{Alnum}(?=\p{Alnum})/_/g;

根据输入编辑

要不吃换行符,可以执行以下操作:

s/\p{Alnum}\K[^\p{Alnum}\n](?=\p{Alnum})/_/g;
当然,这会用“A#B%C”来伤害你的下疳,所以你可以用环顾一下:

s/(?<=\p{Alnum})\P{Alnum}(?=\p{Alnum})/_/g;

根据输入编辑

要不吃换行符,可以执行以下操作:

s/\p{Alnum}\K[^\p{Alnum}\n](?=\p{Alnum})/_/g;
试试这个:

my $str = 'a-2=c+a()_';
$str =~ s/(?<=[A-Z0-9])[^A-Z0-9](?=[A-Z0-9])/\1_\2/gi;
my$str='a-2=c+a();
$str=~s/(?试试这个:

my $str = 'a-2=c+a()_';
$str =~ s/(?<=[A-Z0-9])[^A-Z0-9](?=[A-Z0-9])/\1_\2/gi;
my$str='a-2=c+a();


$str=~s/(?所以这些都不起作用。留下了一个“.”在那里,在字符串的末尾添加了一个u。我还应该提到,在该字符串的末尾必须有一个换行符,并且出于某种原因,该命令(尽管我不理解)吃掉了换行符。Thanks@user520742这三种方法都应该有效,您的输入是什么?一个fasta文件样式的文本文档是“>任何长度或任何内容的标题,直到\n DNA或AA序列。这是文件的第一位(我为换行符添加了),“B.\u bicolor\u var.\u borealis Finished\n cckggtcatcggattattatttaaaaacatgatcaccggtcaggc tgactgctgccatccttacgcaggcg”这是使用上一个示例的输出B.“双色”变量“北极光”完成后“因为它吃了换行符,所以它还插入了新的“uu”好的,这有点乱,抱歉。因为它吃了换行符,所以它还插入了更多”_“如果某些换行符会被程序的另一部分删除。@Axeman edit仍然会在结尾处删除新行,并将最后一个字母和\n之间的\s替换为“\uu”。请您也向我解释一下,我很想知道的不仅仅是复制和粘贴,这是有效的。因此这些都不起作用。请留下一个”。”在那里,在字符串的末尾添加了一个u。我还应该提到,在该字符串的末尾必须有一个换行符,并且出于某种原因,该命令(尽管我不理解)吃掉了换行符。Thanks@user520742这三种方法都应该有效,您的输入是什么?一个fasta文件样式的文本文档是“>任何长度或任何内容的标题,直到\n DNA或AA序列。这是文件的第一位(我为换行符添加了),“B.\u bicolor\u var.\u borealis Finished\n cckggtcatcggattattatttaaaaacatgatcaccggtcaggc tgactgctgccatccttacgcaggcg”这是使用上一个示例的输出B.“双色”变量“北极光”完成后“因为它吃了换行符,所以它还插入了新的“uu”好的,这有点乱,抱歉。因为它吃了换行符,所以它还插入了更多”_“如果某些换行符会被程序的另一部分删除。@Axeman edit仍然会在结尾处删除新行,并将最后一个字母和\n之间的\s替换为“\uu”。请您也向我解释一下,我真的很想知道比复制和粘贴更多的信息,它是有效的。做了与上面相同的操作后,我错过了”。”,吃了换行符,并在字符串末尾添加了一个“u”,因为那里有空白。好的,你的意思是它无法检测“.”作为非字母数字?我们可以选择换行符吗?是的,它无法检测“.”不,我需要该换行符以获得正确的文件格式。\n被称为非字母数字(
[^a-Z0-9]
),并因此被替换。您遇到了什么警告?并不是fasax中的所有行/语句都会遇到捕获的匹配,您将得到这些行/语句的未定义警告,如果需要,您可以使用
定义的
函数检查$1和$2的存在。这不一定是转义问题。如果需要,请在组匹配中包含
\n
不想将它们视为非字母数字,@Axeman在他的回答中提供了一个解决方案。上面的方法是否遗漏了“.”,吃了换行符,并在字符串末尾添加了一个“u”,因为那里有空白。好的,你的意思是它无法检测“.”作为非字母数字?我们可以选择换行吗?是的,它无法检测到“,”不,我需要换行符来获得正确的文件格式。\n被称为非字母数字(
[^A-Z0-9]
),并因此被替换。您遇到了什么警告?并不是fasax中的所有行/语句都会遇到捕获的匹配,您将得到这些行/语句的未定义警告,如果需要,您可以使用
定义的
函数检查$1和$2的存在。这不一定是转义问题。如果需要,请在组匹配中包含
\n
不想将它们视为非字母数字,@Axeman在他的回答中提供了一个解决方案。抱歉,伙计们,我犯了一个错误。我以为该文件使用了\n作为换行符,但它只使用了\r。Perl似乎无法处理\r,而是将整个文件视为一个字符串。这就是它的问题所在“对不起,这都是我的错。我知道有更好的办法,但我理解你希望这样:$lines=~s/(\.\124\?\ 124\-\ 124;)/\ ug;$lines=~s/{2,}/\ug;$lines=~s/{2,}/\ug;$lines=~s/{2,}”$//;我尝试使用代码标记,但四个空格不起作用,现在我感到困惑。我只使用了。-?因为它们是fasta文件标题中出现的最常见的非字母数字符号。抱歉,伙计们,我犯了一个错误。我以为该文件使用了\n作为换行符,但它只使用了\r。Perl似乎无法处理\r\n