当前位置: 首页 > 面试题库 >

如何删除两个定界符之间的单词?

燕宜修
2023-03-14
问题内容

我有一个嘈杂的数据。

<@ """@$ FSDF >something something <more noise>

现在我只想提取"something something"。有没有办法删除这两个定界符"<"和之间的文本">"


问题答案:

使用正则表达式:

>>> import re
>>> s = '<@ """@$ FSDF >something something <more noise>'
>>> re.sub('<[^>]+>', '', s)
'something something '

[更新]

如果您尝试过类似的模式<.+>,其中的点表示任何字符,而加号表示一个或多个,则您知道它不起作用。

>>> re.sub(r'<.+>', s, '')
''

为什么!?!这是因为正则表达式默认情况下是“贪婪的”。该表达式将匹配字符串之前的所有内容,包括>-,这不是我们想要的。我们要匹配<并在下一个处停止>,因此我们使用的[^x]模式表示“除x外的任何字符”(x为>)。

?操作者接通比赛“非贪婪”,所以这有同样的效果:

>>> re.sub(r'<.+?>', '', s)
'something something '

前一个是更明确的,这个是更少的输入;请注意,这x?意味着x出现零次或一次。



 类似资料:
  • 问题内容: 我有一个像 “ ABC [这是为了提取]” 我想提取Java中的部分。我正在尝试使用split,但是它不能按我想要的方式工作。有人有建议吗? 问题答案: 如果您的字符串中只有一对方括号(),则可以使用:

  • 问题内容: 我有一个字符串,例如:“这是应该使用的URL http://www.google.com/MyDoc.pdf ” 我只需要提取从http开始并以pdf结尾的URL:http: //www.google.com/MyDoc.pdf 这使我的输出为“应使用的http://www.google.com/MyDoc.pdf” 需要帮助。 问题答案: 这种问题是针对正则表达式进行的: 正则表达式

  • 问题内容: 我有这样的java字符串: 我想删除标签。我还有一些其他字符串,其中标签的长度更长,因此我想找到一种方法来删除“ <>”字符之间的所有内容,包括那些字符。 一种方法是使用将字符串与regEx进行比较的内置字符串方法,但是我不知道如何编写它们。 问题答案: 注意使用正则表达式时,解析HTML(由于其允许的复杂性),但是,对于“简单” HTML,以及简单的文本(文本没有字面建议或它)这将工

  • 问题内容: 我想删除两个字符之间以及字符本身之间的字符串,例如说: 我想替换“#?”之间所有出现的字符串 和“;” 并用字符将其删除。 由此 对此 我怎么能用Java做到呢? 问题答案: 使用正则表达式:

  • 问题内容: 我有绳子。我想在组织名称之后(在两个“ ..”字符之后)和管道字符之前获取子字符串。因此,输出字符串应为- 。你能帮忙吗? 我一直在尝试形成这样的正则表达式,但似乎没有用。 问题答案: 您可以使用它。 编辑: 这将恰好匹配两个点,后跟一个或多个字符,直到字符串末尾为止。

  • 我有一个包含如下模式的字符串 如何使用或用于编辑此字符串的其他方法 或者 (我可以在以后删除s。) 我尝试使用for循环对其进行硬编码,但字符串太长,需要很长时间才能运行。