正则表达式和Swift:如何抑制两个特定字符串之间的字符串中的所有子字符串?

时间:2019-01-29 18:33:26

标签: ios swift regex

我尝试禁止两个特定字符串之间的字符串中的子字符串#******************************* *****************************和#------------------- -----------------------------------------例如?

:host(.test) div.measure {
  border: 1px solid orange;
}

:host(.test) div.label {
  border: 1px solid red;
}

:host(.test) div.value {
  border: 1px solid green;
}

其他示例:
基本字符串:“ 12345678 <---要删除的文本---> azertyui”

结果:“ 12345678azertyui”

我想创建一个像这样的函数:

...
    # ************************************************************
    # Sequel Pro SQL dump
    # Version 4541
    #
    # http://www.sequelpro.com/
    # https://github.com/sequelpro/sequelpro
    #
    # Hôte: gmp2.newtelapps.fr (MySQL 5.5.62-0+deb8u1)
    # Base de données: GMP
    # Temps de génération: 2019-01-23 16:27:04 +0000
    # ************************************************************


    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


    # Affichage de la table Table_boolean
    # ------------------------------------------------------------
...

这可以让我擦除要删除的确切子字符串。

谢谢。

编辑:
我在这里提出了最终解决方案:

self.removeSubString(inString: Str, fromString:"<---", toString:"--->", includingFromAndToString:YES)

1 个答案:

答案 0 :(得分:1)

例如,您可以删除单词“ World ”,其后是一个井号,后跟一个空格和六十个星星,然后是一个井号,然后是一个空格和六十个负号。 :

let str = "hello# ************************************************************World# ------------------------------------------------------------!"

let regex = try! NSRegularExpression(pattern: "(?<=\\# \\*{60}).+?(?=\\# -{60})")

let result = regex.stringByReplacingMatches(in: str,
                               range: NSRange(location: 0, length: str.count),
                               withTemplate: "")

print(result)

哪个输出:

  

你好#********************************************* ***************#---------------------------------- --------------------------!

正则表达式使用:

  • 正面(?<=)后面
  • 正面提前(?=)

如果您也想删除中间的文本,请使用以下正则表达式:

let regex2 = try! NSRegularExpression(pattern: "\\# \\*{60}.+?\\# -{60}")

let result2 = regex2.stringByReplacingMatches(in: str,
                               range: NSRange(location: 0, length: str.count),
                               withTemplate: "")

print(result2)  //hello!

如果要删除两个已知字符串之间的任何内容,请使用正向后看和正向前看:

let str = "12345678<---text to remove--->azertyui"

let regex = try! NSRegularExpression(pattern: "(?<=12345678).+?(?=azerty)")

let result = regex.stringByReplacingMatches(in: str,
                               range: NSRange(location: 0, length: str.count),
                               withTemplate: "")

print(result)  //12345678azertyui