【发布时间】:2021-06-15 08:28:44
【问题描述】:
我需要通过引用文本和 @ 作者和 # 类别分隔符来解析字符串引用。作者和类别按顺序排列,但是是可选的。像这样:
"When in doubt - don’t. @Ben Franklin #decisions"
{'text': 'When in doubt - don’t.', 'author': 'Ben Franklin', 'category': 'decisions'}
"When in doubt - don’t. #decisions"
{'text': 'When in doubt - don’t.', 'category': 'decisions'}
"When in doubt - don’t. @Ben Franklin"
{'text': 'When in doubt - don’t.', 'author': 'Ben Franklin'}
如果分隔符和空格粘在捕获的组上也没关系,我可以稍后将它们剥离。我当前的正则表达式:
^(.*?)(@.*)(#.*)$
仅当@author 和#category 都出现在输入字符串中时才起作用。试图让后面的组成为可选的让我搞砸了:
^(.*?)(@.*)?(#.*)?$
如何正确捕捉它们?
【问题讨论】:
-
^([^@#]*)(@[^#]*)?(#.*)?$怎么样?见regex101.com/r/553G4y/1 -
行得通,谢谢。