我目前正在尝试匹配HTML文本中的所有字词,并将每个字词包装在<span>
代码中。
我的问题是当一个单词有一个尾随撇号时,如下面的文字小节所示:
seconds’
尾随撇号部分未匹配。
我需要将尾随的'
字符作为单词的一部分。
这是我试过的正则表达式:
([^\r\—>< \/]+(?!\>))(\b)
答案 0 :(得分:0)
我提出了一些与你的例子中的所有单词完全不同的东西:
<EditText
android:hint="xyzz"
android:inputType="phone"
android:id="@+id/num"
android:textColorHint="#000000"
android:layout_gravity="start"
android:textAlignment="viewStart"
android:textDirection="rtl"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_width="match_parent"
tools:ignore="RtlCompat" />
此正则表达式有2个匹配的组,您需要的是第一组中的结果(([\w’]+?)([\s—,]|<br>)
部分)。它匹配任何单词字符(([\w’]+?)
)或\w
字符。您可以在此处添加要包含的任何其他字符。
第二组用作分隔符。它匹配任何空白字符(’
),\s
或,
或字符串—
。您可以在此处添加所需的任何分隔符。
在这里它正在行动,打印你的例子的每个字:
<br>
&#13;
答案 1 :(得分:0)
问题\b
量词将匹配非字母数字,然后反引号是边框。您可以更改一个可选的反引号,然后下一个空格成为边框。 Like this
(([^\r\—>< \/])+(?!\>))(?=\b)[’]?
有关ECMAScript中\b
的更多信息,请查看ECMAScript spec
和MDN Documentation
答案 2 :(得分:0)
您可以使用 \b
来模拟(?=[\s—-])
行为:
([^\r\—>< \/]+(?!\>))\/]+(?!\>))(?=[\s—-])
[^<>,\s—]+?(?!>)(?=[\s—,])
工作正常on your test。您可能需要更新最后一个前瞻以满足您的需求。