swift 中带反斜杠的正则表达式
Regular expression with backslash in swift
我在 swift 5 和 Xcode 12 的文本视图中使用 replacingOccurrences 替换某些特定关键字后的单词时遇到问题。
例如:
我的文本视图将包含以下字符串“NAME\JOHN PHONE5444333”
“NAME”和“PHONE”将是唯一的,所以每当我更改适当的字段时,我想更改此文本视图中的名称或 phone。
例如,让我们用代码
将 JOHN 换成 CLOE
txtOther.text = txtOther.text.replacingOccurrences(of: "NAME(.*?)\s", with: "NAME\\(new_value) ", options: .regularExpression)
print (string)
输出:“NAMECLOE”而不是“NAME\CLOE”
我无法根据正则表达式获取反斜杠进行打印。
或者更改正则表达式只是为了在“NAME”之后将 JOHN 更改为 CLOE
谢谢!!!
爱丽儿
您可以通过对正则表达式使用 raw 字符串来解决这个问题,这是一个用 #
包围的字符串
let pattern = #"(NAME\)(.*)\s"#
注意name和\在一个单独的组里,替换的时候可以参考
let output = string.replacingOccurrences(of: pattern, with: "\(new_value) ", options: .regularExpression)
使用
"NAME\JOHN PHONE\555444333".replacingOccurrences(
of: #"NAME\(\S+)"#,
with: "NAME\\\(new_value)",
options: .regularExpression
)
替换中的双反斜杠,反斜杠是替换中的特殊元字符。
\S+
匹配一个或多个不同于空格的字符,比.*?\s
更短,效率更高,而且你不用担心如何把空格放回去。
我在 swift 5 和 Xcode 12 的文本视图中使用 replacingOccurrences 替换某些特定关键字后的单词时遇到问题。
例如: 我的文本视图将包含以下字符串“NAME\JOHN PHONE5444333”
“NAME”和“PHONE”将是唯一的,所以每当我更改适当的字段时,我想更改此文本视图中的名称或 phone。
例如,让我们用代码
将 JOHN 换成 CLOEtxtOther.text = txtOther.text.replacingOccurrences(of: "NAME(.*?)\s", with: "NAME\\(new_value) ", options: .regularExpression)
print (string)
输出:“NAMECLOE”而不是“NAME\CLOE”
我无法根据正则表达式获取反斜杠进行打印。
或者更改正则表达式只是为了在“NAME”之后将 JOHN 更改为 CLOE
谢谢!!!
爱丽儿
您可以通过对正则表达式使用 raw 字符串来解决这个问题,这是一个用 #
let pattern = #"(NAME\)(.*)\s"#
注意name和\在一个单独的组里,替换的时候可以参考
let output = string.replacingOccurrences(of: pattern, with: "\(new_value) ", options: .regularExpression)
使用
"NAME\JOHN PHONE\555444333".replacingOccurrences(
of: #"NAME\(\S+)"#,
with: "NAME\\\(new_value)",
options: .regularExpression
)
替换中的双反斜杠,反斜杠是替换中的特殊元字符。
\S+
匹配一个或多个不同于空格的字符,比.*?\s
更短,效率更高,而且你不用担心如何把空格放回去。