Разрыв строки Unicode - это либо возврат каретки, за которым сразу следует перевод строки, либо это любой символ со свойством вертикального пробела.
Но похоже, что вы пытаетесь найти общий пробел там. На Java это будет
[\u000A\u000B\u000C\u000D\u0020\u0085\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000]
, который можно сократить, используя диапазоны для «только» этого:
[\u000A-\u000D\u0020\u0085\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]
, чтобы включить как горизонтальные пробелы (\h
), так и вертикальные пробелы (\v
), которые могут совпадать или не совпадать с общими пробелами (\s
).
Похоже, вы пытаетесь сопоставить буквенно-цифровые символы.
- Алфавит обычно один
[\pL\pM\p{Nl}]
.
- Числа не так часто все
\pN
так часто, как они или просто \p{Nd}
или иногда [\p{Nd}\p{Nl}]
.
- Для символов идентификатора требуется пунктуация соединителя и немного больше, поэтому
[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&&\p{So}]]
- если ваш движок регулярных выражений поддерживает такие операции (в Java это делается). Это то, с чем \w
работает в языках регулярных выражений, поддерживающих Юникод (к которым не относится Java).
В старых версиях Perl вы, скорее всего, пишете перевод строки как
(?:\r\n|\p{VertSpace})
хотя теперь это лучше записать как
(?:(?>\r\n)|\v)
это именно то, что
\R
спички.
Ява очень неуклюжа в этих вещах. Там вы должны написать перевод строки как
(?:(?>\u000D\u000A)|[\u000A-\u000D\u0085\u2028\u2029])
что, конечно, требует дополнительной bbaacckkssllasshheess при написании в виде строки.
Другие Java-эквиваленты для 14 общих регулярных выражений класса символов, так что они работают с Unicode, я даю в этом ответе . Возможно, вам придется использовать те из других Java-подобных языков регулярных выражений, которые недостаточно осведомлены о Unicode.