Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Multiline - Fatal编程技术网

Regex Perl正则表达式将多行转换为单行

Regex Perl正则表达式将多行转换为单行,regex,perl,multiline,Regex,Perl,Multiline,我在将多行字符串转换为单行字符串时遇到一些问题 我有这样一个字符串: #66 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, ( #62, #61, #105, #104, #103, #102, #101, #100, #99, #98 ), .UNSPECIFIED., .F., .F., ( 4, 3, 3, 4 ), ( 7.785145389033986000E-018, 0.0001260065739121398800, 0.00018917

我在将多行字符串转换为单行字符串时遇到一些问题

我有这样一个字符串:

#66 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3,
 ( #62, #61, #105, #104, #103, #102, #101, #100, #99, #98 ),
 .UNSPECIFIED., .F., .F.,
 ( 4, 3, 3, 4 ),
 ( 7.785145389033986000E-018, 0.0001260065739121398800, 0.0001891785121403045300, 0.0002523514299847038200 ),
 .UNSPECIFIED. ) ;
但我需要它作为一整条线

这就是我所尝试的:

/^#[0-9].*;)$/s/
我想做什么:

这指向
#66
。之所以这样做,是因为它需要是动态的

.*
这指向
之间的所有内容

;
这就指向了这条线的尽头。但不幸的是,它不起作用

我的正则表达式现在:

这样做:

([^\n]*)\n*/g

只需捕获除换行符以外的所有内容,直到每行遇到换行符

然后用捕获的组替换为
$1


不清楚你在问什么。我想你是在问如何从字符串中删除换行符。这可以通过以下方法实现:

$str =~ s/\n//g;

您期望的输出是什么?如果您希望所有内容都在一行中,您不能删除所有内容吗?@CinCout谢谢!如果你回答我,我就接受!这似乎是一个后续的问题,我回答了(你也接受了),但没有考虑多行字符串。如果确实是这样,那么这个答案也适用于多行字符串——您只需要向正则表达式添加
/s
修饰符。(一个“修饰符”是你在后面添加的,比如
/…/s
)我在我的结尾添加了一条注释。是的,看到了:)顺便说一句,这些字符串现在有点不同,但是你也可以修改答案中的正则表达式来处理它们——添加到那些字符类(
[…]
)额外的字符来接受,比如
(适用于
#62
等)或
(适用于
.F.
等),这取决于您希望从所有术语中捕获什么。如何在Perl中添加替换项?因为在Perl脚本中添加正则表达式时,它不会将“;”添加到字符串中。我不知道替换项是否有帮助。我正在尝试删除换行符。这样我就可以将字符串从#1234拆分为分号。但我的问题是删除时对于换行符,它不会在行的末尾添加分号。因此,现在将其替换为:“#14=顶点点('NONE',#50707);”我得到了:“#14=顶点点('NONE',#50707)”。没有分号。我的问题中的示例也是如此。我使用了@CinCout的答案,但在答案中他提到了“然后用捕获的组$1替换”。我不知道如何在Perl中做到这一点。Re“我试图做的是删除换行符。”,“换行符”“实际上并不意味着什么,也没有说来自什么。你的意思是要从字符串中删除换行符吗?这就是我答案中的代码所做的。我甚至说了很多。///我看不出其他任何注释与我的答案有什么关系。
/([^\n]*)\n* /g
$str =~ s/\n//g;