【问题标题】:Apostrophe as part of a word with regexp in MATLAB撇号作为 MATLAB 中正则表达式的单词的一部分
【发布时间】:2013-06-13 00:27:37
【问题描述】:

我正在 MATLAB 中处理文本。为此,我需要我的正则表达式才能正常工作。

到目前为止,我在下面有这个正则表达式,它几乎适用于所有内容,但我想在其中添加一些内容,以便它读取撇号作为单词的一部分。

V1 = regexp(inpstr,'\w*[^a-zA-Z0-9\ _\ -\ "\ *\f\n\r\t\v\x20]?','match');

所以,我的一个示例性问题是:如果我有一个字符串:

'Hi, let's play some ball.'

我希望正则表达式给我'Hi,' - 'let's' - 'play' - 'some' - 'ball.'

目前它给了我'Hi,' - 'let' - 's' - 'play' - 'some' - 'ball.'

我想问题是我不能只将 \ ' 添加到正则表达式中,因为 MATLAB 使用了 '. 我尝试添加它并且发生了这种情况:??? Error: File: TestScript.m Line: 13 Column: 38 The input character is not valid in MATLAB statements or expressions.

任何帮助将不胜感激 =)

【问题讨论】:

  • 我需要它在不操作输入文本的情况下工作。
  • 尝试使用 \' ' 而不是 \' 因为你需要逃避它..
  • “不操作输入文本”是什么意思?
  • 我认为链接中的解决方案是在字符串中添加一个额外的撇号。那将是一种操纵。

标签: regex matlab apostrophe


【解决方案1】:

试试这个

\w*[^a-zA-Z0-9\ _\ -\ '\ "\ *\f\n\r\t\v\x20]?

【讨论】:

  • 尝试使用 \' ' 而不是 \'
  • 我发现 MATLAB 有撇号 ' 作为 char(39) (ascii 字符)......现在我需要找到一种在正则表达式中使用 char(39) 的方法,以便它工作。
  • 当我了解如何在 regexp 命令中使用 char(x) 命令时,我可以执行类似 regexp(inpstr,'\wchar(39)*\w之类的操作>','match'),但我猜 matlab 无法识别文本中的 ascii? ...我可以使用 .对于“任何角色”……我会试试的。
【解决方案2】:

我的问题的解决方案是这样的:

V1 = regexp(inpstr,'\w*[\'']*[^\_\-\"\*\s]*','match')

基本上,在[ ] 之间放置要表达的字符,在[^ ] 之间放置要跳过的字符。此外,\s 是所有空格的快捷方式。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2021-10-15
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 2022-08-05
    相关资源
    最近更新 更多