假设我有一长串文字,如段落或更多,并且有一个特定的词经常出现,我们称之为KEY。
我想在每个KEY之后的单词之后插入一个“\ n”。
所以如果我有字符串\0
。我希望它看起来像strptr++
如果任务稍微简单一点,我只想在KEY之后添加\ n,那么我可以轻松地使用app = Flask(__name__)
app.config.from_object('config')
CsrfProtect(app)
db = SQLAlchemy(app)
,但我不认为正则表达式有一种优雅的方式来选择匹配,即使它确实如此,我也不确定我是否可以在import os
basedir = os.path.abspath(os.path.dirname(__file__))
DEBUG = True
WTF_CSRF_ENABLED = True
SECRET_KEY = 'supersecretkey'
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'project.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
中使用它。
在我想要的地方添加\ n的好方法是什么?
答案 0 :(得分:2)
您可以使用捕获组并返回参考。正如WiktorStribiżew所指出的那样,您必须决定如何处理某些场景和案例的具体情况。
对于显示的示例案例,查找KEY后跟一个空格,后跟非whitepspace字符1次或更多次(\\S+
),后跟空格:
gsub("(KEY \\S+ )", "\\1\n", string, perl = TRUE)
如果你想在“KEY”之后更加通用,那么你可以添加一个字符类,包括你允许的内容(或者对于任何空格字符都是\或对于任何非字母数字/下划线字符都是\ W ,正如Wiktor所指出的那样)。像这样:
gsub("(KEY[., ;!?]\\S+ )", "\\1\n", string, perl = TRUE)
gsub("(KEY\\s\\S+ )", "\\1\n", string, perl = TRUE)
gsub("(KEY\\W+\\S+ )", "\\1\n", string, perl = TRUE)
在字符类部分[., ;!?]
Wiktor的变体可能更强大一些:
gsub("(KEY\\s+\\S+\\s*)", "\\1\n", string) # \s = white-space character
# \S = non-white-space character
gsub("(KEY\\W+\\w+\\s*)", "\\1\n", string) # \w for alphanumeric/underscore
# \W for the opposite of \w.
这些变体在下一个单词后面不需要空格(\\s*
表示0个或更多空格字符)并且它们可以匹配KEY之后的一个或多个空白字符或一个或多个非字母数字/下划线在KEY之后。