Шаблон #(\S*)
будет соответствовать #
, за которым 0+ раз будет непробельный символ в захваченной группе. Это также будет соответствовать одному #. Строка #World#place#live.
не содержит пробельных символов, поэтому вся строка будет сопоставлена.
Вместо этого вы можете сопоставить их, используя класс отрицанных символов. Соответствие #, за которым следует отрицательный класс символов, который не соответствует символу # или пробелу.
#[^#\s]+
const strings = [
"#World is a #good #place to #live.",
"#World#place#live."
];
let pattern = /#[^#\s]+/g;
strings.forEach(s => {
console.log(s.match(pattern));
});
Вам нужна другая кавычка для выхода из кавычки:
Writeln('I''m in your head'); //prints: I'm in your head
Writeln(''''); //prints: '
См. также этот вопрос .
Delphi имеет QuotedStr()
функция, которая добавляет кавычки вокруг строки и делает выход апострофов в строке автоматически.
procedure MyForm.MyProc;
var str : string;
begin
str = QuotedStr(MyForm.Edit1);
...
end;
QuotedStr()
поместит содержание поля редактирования в апострофы. Если поле редактирования будет содержать апострофы, то их правильно оставят.
Подобный Вопрос здесь:
, Как делает символы ESC в строке Delphi
одинарные кавычки Покрытий и символы ESC
Я обычно использую эти QuotedStr
функция для фиксации строк с кавычками в них. Кроме того, я часто нахожу полезным определить константы как CRLF
и TAB
, которые представляют #13#10
и #9
соответственно. Иногда, это кажется более ясным (мне, по крайней мере), чтобы сделать что-то похожее с кавычками.