В следующем коде, если к строке s добавляется что-то вроде 10 или 20 тысяч символов, происходит сбой сегментации ядра Mathematica.
s = "This is the first line.
MAGIC_STRING
Everything after this line should get removed.
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890
...";
s = StringReplace[s, RegularExpression@"(^|\\n)[^\\n]*MAGIC_STRING(.|\\n)*"->""]
Я думаю, что это в первую очередь вина Mathematica, и я отправил отчет об ошибке и сообщу здесь, если получу ответ. Но мне также интересно, делаю ли я это глупо/неэффективно. И даже если нет, идеи по обходу ошибки Mathematica будут оценены.
MAGIC_STRING
и взять первый результат. - person Max Shawabkeh   schedule 13.02.2010StringSplit
Mathematica работает с регулярными выражениями, поэтому вы можете использовать(?m)^.*MAGIC_STRING
, чтобы разделение происходило в начале строки. О, и посмотрите ответ @Michael относительно/s
(и/m
и/i
). - person Alan Moore   schedule 14.02.2010