我正在寻找Python中的一个string.contains或string.indexof方法.
我想要做:
if not somestring.contains("blah"):
continue
Run Code Online (Sandbox Code Playgroud) 这是解释这个问题的最简单方法.这是我正在使用的:
re.split('\W', 'foo/bar spam\neggs')
-> ['foo', 'bar', 'spam', 'eggs']
Run Code Online (Sandbox Code Playgroud)
这就是我想要的:
someMethod('\W', 'foo/bar spam\neggs')
-> ['foo', '/', 'bar', ' ', 'spam', '\n', 'eggs']
Run Code Online (Sandbox Code Playgroud)
原因是我想将一个字符串拆分成标记,操纵它,然后再将它重新组合在一起.
Python有一个函数可以用来转义正则表达式中的特殊字符吗?
例如,I'm "stuck" :\应该成为I\'m \"stuck\" :\\.
是否有任何功能相当于df.isin()和df[col].str.contains()?的组合?
例如,假设我有这个系列
s = pd.Series(['cat','hat','dog','fog','pet']),并且我想找到s包含任何内容的所有地方['og', 'at'],我想要获得除了宠物之外的一切.
我有一个解决方案,但它相当不优雅:
searchfor = ['og', 'at']
found = [s.str.contains(x) for x in searchfor]
result = pd.DataFrame[found]
result.any()
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
任何人都可以解释为什么下面的示例1有效,何时r不使用前缀?我认为r只要使用转义序列,就必须使用前缀.示例2和示例3证明了这一点.
# example 1
import re
print (re.sub('\s+', ' ', 'hello there there'))
# prints 'hello there there' - not expected as r prefix is not used
# example 2
import re
print (re.sub(r'(\b\w+)(\s+\1\b)+', r'\1', 'hello there there'))
# prints 'hello there' - as expected as r prefix is used
# example 3
import re
print (re.sub('(\b\w+)(\s+\1\b)+', '\1', 'hello there there'))
# prints 'hello there there' - as expected as r prefix is not used
Run Code Online (Sandbox Code Playgroud) 有没有办法在Java中使用原始字符串(没有转义序列)?
(我正在编写相当数量的正则表达式代码,原始字符串会使我的代码更具可读性)
我知道这种语言并没有直接提供,但有没有办法以任何方式"模拟"它们?
从正则表达式的python文档,关于'\'字符:
解决方案是使用Python的原始字符串表示法来表示正则表达式模式; 在前缀的字符串文字中,不以任何特殊方式处理反斜杠
'r'.所以r"\n"是一个包含'\'和的双字符字符串'n',"\n"而是包含换行符的单字符字符串.通常,模式将使用此原始字符串表示法在Python代码中表示.
什么是原始字符串表示法?如果您使用原始字符串格式,这是否意味着"*"作为文字字符而不是零或多指标?这显然是不对的,否则正则表达式将彻底失去它的力量.但是,如果它是一个原始字符串,它"\n"是如何识别换行符,如果它实际上是一个反斜杠和一个"n"?
我不跟随.
编辑赏金:
我试图理解原始字符串正则表达式如何匹配换行符,制表符和字符集,例如\w单词或\d数字或所有其他,如果原始字符串模式不能将反斜杠识别为普通字符以外的任何内容.我真的可以使用一些很好的例子.
我试图-]\^$*.用一个反斜杠来逃避每个角色\.
例如,字符串:^stack.*/overflo\w$arr=1将变为:
\^stack\.\*/overflo\\w\$arr=1
Run Code Online (Sandbox Code Playgroud)
在Python中最有效的方法是什么?
re.escape 双逃脱不是我想要的:
'\\^stack\\.\\*\\/overflow\\$arr\\=1'
Run Code Online (Sandbox Code Playgroud)
我需要这个以逃避其他东西(nginx).
我有一个简单的功能,从一些文本中删除"单词":
def remove_word_from(word, text):
if not text or not word: return text
rec = re.compile(r'(^|\s)(' + word + ')($|\s)', re.IGNORECASE)
return rec.sub(r'\1\3', text, 1)
Run Code Online (Sandbox Code Playgroud)
当然,问题在于,如果单词包含诸如"("或")"之类的字符,那么事情就会中断,并且在正则表达式的中间粘贴一个随机单词通常是不安全的.
处理此类案件的最佳做法是什么?是否有一个方便,安全的功能,我可以打电话来逃避"字",这样可以安全使用?
在正则表达式中有没有办法在 PCRE 语法中转义整个文本区域中的特殊字符?
例如。 hey+Im+A+Single+Word+Including+The+Pluses+And.Dots
通常情况下,以匹配正则表达式,我将不得不逃离每一个确切的字符串+,并.与/S IN上面的字符串。这意味着如果字符串是一个变量,则必须寻找特殊字符并手动转义它们。通过告诉正则表达式转义文本块中的所有特殊字符,是否有更简单的方法来做到这一点?
这背后的动机是将其附加到更大的正则表达式中,因此即使有更简单的方法来获得精确匹配,它们也不适用于此处。