如何在 Delphi 上创建正则表达式以删除括号和引号

Edu*_*ias 2 regex delphi

我以前从未使用过 TPerlRegEx,这是我第一次使用正则表达式。

我正在寻找一个在Delphi Xe2中使用TPerlRegEx的小例子来删除括号和引号,如下所示:

输入字符串:

["some text"]
Run Code Online (Sandbox Code Playgroud)

结果:

some text
Run Code Online (Sandbox Code Playgroud)

单行,没有嵌套的括号或引号。我已经使用 Regexbuddy 创建和测试正则表达式,但它没有给我结果。

Ken*_*ite 5

这适用于正则表达式好友:

\n\n

正则表达式:

\n\n
\\["(.+?)"\\]\n
Run Code Online (Sandbox Code Playgroud)\n\n

代替:

\n\n
$1\n
Run Code Online (Sandbox Code Playgroud)\n\n

像这样使用:

\n\n
var\n  RegEx: TPerlRegEx;\nbegin\n  RegEx := TPerlRegEx.Create(nil);\n  try\n    Regex.RegEx := \'\\["(.+?)"\\]\';\n    Regex.Subject := SubjectString;  // ["any text between brackets and quotes"]\n    Regex.Replacement := \'$1\';\n    Regex.ReplaceAll;\n    Result := Regex.Subject;\n  finally\n    RegEx.Free;\n  end;\nend;\n
Run Code Online (Sandbox Code Playgroud)\n\n

怎么运行的:

\n\n
Match the character "[" literally \xc2\xab\\[\xc2\xbb\nMatch the character """ literally \xc2\xab"\xc2\xbb\nMatch the regular expression below and capture its match into backreference number 1 \xc2\xab(.+?)\xc2\xbb\n   Match any single character that is not a line break character \xc2\xab.+?\xc2\xbb\n      Between one and unlimited times, as few times as possible, expanding as needed (lazy) \xc2\xab+?\xc2\xbb\nMatch the character """ literally \xc2\xab"\xc2\xbb\nMatch the character "]" literally \xc2\xab\\]\xc2\xbb\n\n\nCreated with RegexBuddy\n
Run Code Online (Sandbox Code Playgroud)\n

  • @eelias 因为与 (.+?) 模式匹配的内容(即双引号之间的内容)成为捕获组。您可以按索引引用捕获组。在 ["some text"] 的情况下,文本 <some text> 将被捕获为组 1。然后他将所有出现的 \["(.+?)"\] 替换为捕获组 1 的内容(即 $1)在您的情况下,这是 <some text> 。您可以在这里找到更多信息:http://www.regular-expressions.info/brackets.html (2认同)