Perl regexp tr //"我不明白为什么会这样做?"

The*_*ged 0 regex perl

我对我的字符串$ text执行了以下操作

$text =~ tr/a-zåàâäæçéèêëîïôöœßùûüÿA-ZÅÀÂÄÆÇÉÈÊËÎÏÔÖŒÙÛÜŸ'()\-,.?!:;/\n/cs;
Run Code Online (Sandbox Code Playgroud)

这样做是为了在换行符中拆分字符串.这就是我想要做的

但我不明白为什么会这样做?

我认为这条线路可以接受所有字符a-zåàâäæçéèêëîïôöœßùûüÿA-ZÅÀÂÄÆÇÉÈÊËÎÏÔÖŒÙÛÜŸ'() - ,.?!:; 并用\n替换它们中的每一个

我不知道cs到底是做什么的.在这里你可以得到cs的解释,但我不明白它的含义:

"c - 用于指定SEARCHLIST字符集被补充"

"s - 用于指定被音译到同一个字符的字符序列被压缩为字符的单个实例"

例:

$text= "a ar? å ..";
Run Code Online (Sandbox Code Playgroud)

一个
ar?
å
..

And*_*ark 5

c - 用于指定补充SEARCHLIST字符集

在这种用法中,"补充"类似于"否定"或"反转",因此不会替换表达式中列出的字符,而是替换表达式中找到的每个字符.在您的示例字符串中,这意味着所有空格都替换为换行符,因为每个其他字符都包含在集合中.