我正在使用以下正则表达式
^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$
Run Code Online (Sandbox Code Playgroud)
我知道这很难看,但到目前为止,除了不允许反斜杠之外它还有其他目的,因为它已经逃脱,我也试过\\而不是\\\相同的结果.有任何想法吗?
当我创建一个包含反斜杠的字符串时,它们会重复:
>>> my_string = "why\does\it\happen?"
>>> my_string
'why\\does\\it\\happen?'
Run Code Online (Sandbox Code Playgroud)
为什么?
为什么字边界不起作用?
阅读这个网站,我知道一个单词边界是这样的:
有三种不同的职位符合词边界:
a下面的字符串似乎符合上面列出的至少一个位置.
a = 'Builders Club The Ohio State'
re.sub('\bThe\b', '', a, flags=re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
输出."The"没有变化.
'Builders Club The Ohio State'
Run Code Online (Sandbox Code Playgroud)
为什么字边界不起作用?
当我在'The'模式之前和之后放置空格时,正则表达式似乎有效.
a = 'Builders Club The Ohio State'
re.sub(' The ', ' ', a, flags=re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
输出:
'Builders Club Ohio State'
Run Code Online (Sandbox Code Playgroud) 例:
def searchResult(expr, inputStr):
if (re.search(expr, inputStr)):
return True
return False
print(searchResult("\s", "the quick brown fox")) # True
print(searchResult("\bfox", "the quick brown fox")) # False
print(searchResult("\\bfox", "the quick brown fox")) # True
Run Code Online (Sandbox Code Playgroud)
我需要双"\\b"字斜杠用于字边界,但只有单个反斜杠"\s"可用于空格字符.为什么字边界需要双反斜杠?
我试图让我们python重新分割多个分隔符上的字符串,但它尖叫我的转义反斜杠字符.
我不确定要改变什么,因为当我在python中寻找逃避反斜杠时,这就是我所展示的是正确的......
import re
def get_asset_str(in_str):
split = re.split(' |/|\\' , in_str)
Traceback (most recent call last):
File "AssetCheck.py", line 15, in <module>
get_asset_str(line)
File "AssetCheck.py", line 4, in get_asset_str
split = re.split(' |/|\\' , in_str)
File "C:\Python27\lib\re.py", line 167, in split
return _compile(pattern, flags).split(string, maxsplit)
File "C:\Python27\lib\re.py", line 244, in _compile
raise error, v # invalid expression
sre_constants.error: bogus escape (end of line)
Run Code Online (Sandbox Code Playgroud)