我的文字很简单:
$text = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до- рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур. ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан. FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.";
在这里,我想结合单词并得到这个结果:
БАДРЎ(Й)(ي(بدروонкирўинозебухунук的дорад中,бадафт,безеб,бадбашара;。муќобТез-тезгандаОБАНДОМآباندامмаљобпайкар,нозукандом,латифбадан。 FБАФКАНآبافكنмуњаррикизур - зуробафкан,дастгоњиобпошї。
也就是说,您需要以这种方式组合这些词:
до- рад到дорад
нозукан-дом到нозукандом
даст-гоњи到дастгоњи
我使用此代码删除\ r \ n:
$regex = '~-\R~';
$result = preg_replace($regex, '', $string);
只得到那个结果:
БАДРЎ(Й)(ي(بدروонкирўинозебухунук的дорад中,бадафт,безеб,бадбашара;。муќобТез-теззур - зурОБАНДОМآباندامмаљобпайкар,нозукан-дом, латифбадан.FБАФКАНآبافكنмуњаррикиобафкан,даст-гоњиобпошї。
无法合并这些字词:
нозукан-дом到нозукандом
даст-гоњи到дастгоњи
答案 0 :(得分:1)
答案 1 :(得分:1)
您需要替换\R
或空格,并添加字边界(\b
)。最后,既然您正在处理单词,则需要添加u
flag,以便引擎认为是UTF-8。
<?php
$text = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до-
рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.";
$regex = '/\b-(\R| )\b/u';
$result = preg_replace($regex, '', $text);
echo $result;
<强>结果强>:
БАДРЎ(Й)(ي(بدروонкирўинозебухунукдорад,бадафт,безеб,бадбашара;муќоб.Тез-теззур - зур。 ОБАНДОМآباندامмаљ。 обпайкар,нозукандом,латифбадан。 FБАФКАНآبافكنмуњаррикиобафкан,дастгоњиобпошї。
答案 2 :(得分:1)
我建议使用
$result = preg_replace('~\b-(?:\R|\h)\b~u', '', $string);
请参阅regex demo
<强>详情
\b
- 一个单词边界(当前位置必须以单词char -
- 连字符(?:\R|\h)
- 换行符序列(\R
)或(|
)任何水平空格(\h
)\b
- 一个单词边界(当前位置右侧必须有一个单词char)$string = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до-
рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.";
$result = preg_replace('~\b-(?:\R|\h)\b~u', '', $string);
echo $result;
输出:
БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук дорад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
ОБАНДОМ آباندام маљ. обпайкар, нозукандом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, дастгоњи обпошї.
答案 3 :(得分:0)
看起来有几个人不在最后,对吧?所以你可能还需要包括:
;with cte_Premiums
as
(
select sum(Premium) as Premium,
Division,
LEFT(DATENAME(MONTH,[EffectiveDate]),3) +' '+ CONVERT(varchar(4),Year(EffectiveDate)) AS MonthYear,
MAX(DATEPART(MM, [EffectiveDate])) as DateOrder
from ##OlegTest
group by LEFT(DATENAME(MONTH,[EffectiveDate]),3) +' '+ CONVERT(varchar(4),Year(EffectiveDate)), Division
)
,cte_Budget
AS
(
select insurType,
Amount,
LEFT(DATENAME(MONTH,[PostDate]),3) +' '+CONVERT(varchar(4),Year([PostDate])) AS MonthYear
from BudgetData
)
select Premium,
Amount as BudgetAmount,
Division,
p.MonthYear
FROM cte_Premiums p INNER JOIN cte_Budget b ON p.Division = b.insurType and p.MonthYear = b.MonthYear
ORDER BY Division,DateOrder
我没有能力对此进行测试,但你可以将两者结合起来
$regex = '~- ~';
$result = preg_replace($regex, '', $string);