我想用空格和特殊字符(如果有的话)来分割字符串。例如:用于表示移动交换中心(信号强度)。
目前我正在使用正则表达式来拆分字符串,但我无法同时实现空格和特殊字符的拆分。
insert into tmp(word)
select regexp_substr('For expressing mobile switching center
(signal strength).', '(.*?)([[:space:]]|$)', 1, level, null, 1 ) as token
from dual
connect by level <= regexp_count('For expressing mobile switching center (signal strength).', '[[:space:]/:]+') + 1
CREATE TABLE TMP(WORD VARCHAR2(4000));
Current Output: For
expressing
mobile
switching
center
(signal
strength).
Expected Output: For
expressing
mobile
switching
center
(
signal
strength
)
.
更新代码:
insert into tmp(word)
select regexp_substr('For expressing mobile switching center (signal strength).', '(.*?)([[:space:]()]|$)', 1, level, null, 1 ) as token
from dual
connect by level <= regexp_count('For expressing mobile switching center (signal strength).', '(.*?)([[:space:]()]|$)')+ 1
Result:
For
expressing
mobile
switching
center
(null)
signal
strength
.
(null)
(null)
这将拆分为任何非字母或数字的字符:
WITH
aset AS( SELECT 'abc def;ghi|hkl () 0W-' AS tobesplit FROM DUAL ),
splitup ( VALUE, rest ) AS
(SELECT SUBSTR( tobesplit
, 1
, REGEXP_INSTR( tobesplit || ' ', '[^a-zA-Z0-9]' ) - 1 )
, SUBSTR( tobesplit, REGEXP_INSTR( tobesplit || ' ', '[^a-zA-Z0-9]' ) + 1 ) || ' '
FROM aset
UNION ALL
SELECT SUBSTR( rest
, 1
, REGEXP_INSTR( rest, '[^a-zA-Z0-9]' ) - 1 )
, SUBSTR( rest, REGEXP_INSTR( rest || ' ', '[^a-zA-Z0-9]' ) + 1 )
FROM splitup
WHERE rest IS NOT NULL)
SELECT value
FROM splitup where value is not null;
我调整了您的正则表达式,以便它搜索 (a) 括号字符或 (b) 一系列不是空格或括号的字符。
select regexp_substr('For expressing mobile switching center (signal strength).', '[()]|[^[:space:]()]+', 1, level, null) as token
from dual
connect by level <= regexp_count('For expressing mobile switching center (signal strength).', '[()]|[^[:space:]()]+');
这是DB2,但希望您可以将其翻译为:
with data (s) as (values
('For expressing mobile switching center (signal strength).')
),
tally (n) as (
select row_number() over (order by 1)
from (values (0),(0),(0),(0),(0),(0),(0),(0)) x (n)
cross join (values (0),(0),(0),(0),(0),(0),(0),(0)) y (n)
)
select regexp_substr(s,'([A-Za-z]+|\(|\)|\.)', 1, n)
from data
cross join tally
where n <= regexp_count(s,'([A-Za-z]+|\(|\)|\.)')
现在假设用户enterd AAA-222 结果将是 ps.拆分的部分应该包括空格。
我有一个输入字符串像: 拆分后,我应该得到: 输出 规则: 格式类似于 值可以有除空格以外的任何特殊字符。 值可以有空格,如果在引号例如。或 我写了正则表达式,但引号内的引号搞砸了: 此外,我还尝试在上解析字符或拆分,但我面临着歧义,因为它们也可能在引号内。
问题内容: 因此,stdin将一串文本返回到列表中,并且多行文本都是列表元素。您如何将它们全部分割成一个单词? 想要的输出: 问题答案: 您可以使用简单的列表推导,例如: 这将产生:
这个问题类似于我之前的问题拆分一个包含破折号和减号的字符串。但我问错了,然后它得到了稍微不同的语义,人们从这个角度回答(包括)。因此,与其修改这个问题,我认为最好是提出一个新问题。 我必须拆分一个包含连字符-减号和减号的字符串。我尝试根据Unicode字符(https://en.wikipedia.org/wiki/Hyphen#Unicode)进行拆分,但考虑到减号与连字符-减号相同。有什么方法
问题内容: 我想用多个定界符分割一个字符串,但将定界符保留在结果列表中。我认为这是解析任何一种公式的初始步骤都是有用的,而且我怀疑有一个不错的Python解决方案。 有人在这里用Java问了类似的问题。 例如,典型的拆分如下所示: 但是我正在寻找一种添加加号(或保留它)的好方法: 最终,我想对每个运算符和括号进行此操作,因此,如果有一种方法 一劳永逸,那就更好了。 问题答案: 您可以使用Pytho
问题内容: 我必须检测一个字符串是否包含任何特殊字符。我该如何检查?Swift支持正则表达式吗? 我尝试了上面的代码,但是只有当我输入第一个字符作为特殊字符时,它才匹配。 问题答案: 您的代码检查字符串中是否没有字符来自给定的集合。您要检查的是给定集合中是否 没有 任何 字符: __ 您还可以使用正则表达式实现此目的: 该模式匹配的字符 不在 AZ,az或0-9范围内。 Swift 2更新: Sw