正则表达式:获取花括号后的所有内容
RegEx: get everything after curly braces
我从包含命名空间的 XML 文件中获得了节点名称:
{http://datex2.eu/schema/2/2_0}nodeName
由此我想 trim 命名空间,它在花括号中。所以结果应该只是节点名称。可能是 将花括号 中的所有内容与正则表达式匹配,然后将它们从字符串中删除。 或者直接匹配大括号后的内容。但是我太笨了,无法正确使用 Regex ...
感谢您的帮助!
PS:我正在编码 Python 3.
像这样? Demo.
(?P<curlyStuff>\{[^}]+\})?(?P<nodeName>\w+)\b
试试这个:
s = '{http://datex2.eu/schema/2/2_0}nodeName'
search = re.search('{.*}(.*)',s)
print (search.group(1))
如果您假设您想要“}”之后的所有内容,则无需正则表达式即可完成:
与 rsplit
- 取“}”之后的内容
s.rsplit("}")[-1]
使用 rsplit
更有效 - 最多拆分一次
s.rsplit("}", 1)[-1]
使用 rfind
更高效,不会分配带有我们要丢弃的前缀的字符串
s[s.rfind("}")+1:]
我从包含命名空间的 XML 文件中获得了节点名称:
{http://datex2.eu/schema/2/2_0}nodeName
由此我想 trim 命名空间,它在花括号中。所以结果应该只是节点名称。可能是 将花括号 中的所有内容与正则表达式匹配,然后将它们从字符串中删除。 或者直接匹配大括号后的内容。但是我太笨了,无法正确使用 Regex ...
感谢您的帮助!
PS:我正在编码 Python 3.
像这样? Demo.
(?P<curlyStuff>\{[^}]+\})?(?P<nodeName>\w+)\b
试试这个:
s = '{http://datex2.eu/schema/2/2_0}nodeName'
search = re.search('{.*}(.*)',s)
print (search.group(1))
如果您假设您想要“}”之后的所有内容,则无需正则表达式即可完成:
与
rsplit
- 取“}”之后的内容s.rsplit("}")[-1]
使用
rsplit
更有效 - 最多拆分一次s.rsplit("}", 1)[-1]
使用
rfind
更高效,不会分配带有我们要丢弃的前缀的字符串s[s.rfind("}")+1:]