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;