Swift - 从字符串中删除 "\\text { and_whatever_is_here }" 的正则表达式

Swift - regex to remove "\\text { and_whatever_is_here }" from string

Swift 5

我正在调用一个 API,returns 一个包含 LaTex 元素的字符串。在一个完美的世界中,API 会删除很多不需要的内容,但它会返回,我需要手动将其全部删除。

有人知道如何使用一个或多个正则表达式实现以下功能吗?


\text { c. } 50 \times 14

更改为:

50 \times 14


\text { d. } 180 \div 5

更改为:

180 \div 5


更复杂的字符串:

\left. \begin{array} { l l } { \text { b) } 2 \frac { 1 } { 5 } \div ( \frac { 4 } { 5 } - \frac { 1 } { 4 } ) } & { } \\ { \text { b) } \frac { 1 } { 4 } - \frac { 3 } { 4 } ) } & { } \end{array} \right.

更改为:

\left. \begin{array} { l l } { 2 \frac { 1 } { 5 } \div ( \frac { 4 } { 5 } - \frac { 1 } { 4 } ) } & { } \\ { \frac { 1 } { 4 } - \frac { 3 } { 4 } ) } & { } \end{array} \right.


本质上,我试图删除任何出现的:

\text {and_this_also}

您可以使用

let text = #"\left. \begin{array} { l l } { \text { b) } 2 \frac { 1 } { 5 } \div ( \frac { 4 } { 5 } - \frac { 1 } { 4 } ) } & { } \\ { \text { b) } \frac { 1 } { 4 } - \frac { 3 } { 4 } ) } & { } \end{array} \right."#
let result = text.replacingOccurrences(of: #"\\text\s*\{[^{}]*\}"#, with: "", options: .regularExpression, range: nil)
print(result)

输出:

\left. \begin{array} { l l } { 2 \frac { 1 } { 5 } \div ( \frac { 4 } { 5 } - \frac { 1 } { 4 } ) } & { } \\ { \frac { 1 } { 4 } - \frac { 3 } { 4 } ) } & { } \end{array} \right.

\\text\s*\{[^{}]*\} 模式匹配

  • \\text - \text 字符串
  • \s* - 零个或多个空格
  • \{ - 一个 { 字符
  • [^{}]* - {}
  • 以外的零个或多个字符
  • \} - 一个 } 字符。

参见regex demo