小编MCH*_*MCH的帖子

C++ 11 Regex中的UTF-8字符范围

这个问题是Do C++ 11正则表达式与UTF-8字符串一起使用的扩展吗?

#include <regex>  
if (std::regex_match ("?", std::regex("?") ))  // "\u4e2d" also works
  std::cout << "matched\n";
Run Code Online (Sandbox Code Playgroud)

该程序在Mac Mountain Lion上编译,clang++具有以下选项:

clang++ -std=c++0x -stdlib=libc++
Run Code Online (Sandbox Code Playgroud)

上面的代码有效.这是一个标准范围正则表达式,"[?-?????]"用于匹配任何日语汉字或汉字.它适用于Javascript和Ruby,但即使使用类似的版本,我似乎也无法使用C++ 11工作[\u4E00-\u9fa0].下面的代码与字符串不匹配.

if (std::regex_match ("?", std::regex("[?-?????]")))
  std::cout << "range matched\n";
Run Code Online (Sandbox Code Playgroud)

改变语言环境也没有帮助.有任何想法吗?

编辑

所以我发现如果你添加+到最后,所有范围都有效.在这种情况下[?-?????]+,但如果你添加{1} [?-?????]{1}它不起作用.而且,它似乎超越了它的界限.它不会匹配拉丁字符,但它会匹配?这是\u306f?\u3041.他们都躺在下面\u4E00

nhahtdh还提出了regex_search,它也可以在不增加的情况下工作,+但它仍然会遇到与上面相同的问题,因为它会超出其范围.同时也使用了语言环境.Mark Ransom建议它将UTF-8字符串视为一组愚蠢的字节,我认为这可能就是它所做的.

进一步推动UTF-8变得混乱的理论[a-z]{1}[a-z]+匹配a,但只[?-?????]+匹配任何角色,而不是[?-?????]{1}.

c++ regex unicode utf-8 c++11

30
推荐指数
1
解决办法
5617
查看次数

如果不是null SQLAlchemy和Django,则为唯一

鉴于这个用SQLAlchemy和Django models.py编写的简单表,如果不为null,我如何设置UPC是唯一的.UPC不适用于所有项目,但是它应该是唯一的.

class Products(base):  
    __tablename__ = u'products'  
    id = Column(Integer(), primary_key=True, autoincrement = True)  
    product_name = Column(String(), unique=True, nullable=False)  
    upc = Column(String(), nullable = True)  
Run Code Online (Sandbox Code Playgroud)

class Products(models.Model):
    id = models.AutoField(primary_key=True)
    product_name = models.TextField()
    upc = models.TextField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

sql django null sqlalchemy unique

10
推荐指数
1
解决办法
2974
查看次数

Haskell Parsec组合子'many'应用于接受空字符串的解析器

import Text.ParserCombinators.Parsec

delimiter :: Parser ()
delimiter = do char '|'
               return ()
          <?> "delimiter"


eol :: Parser ()
eol = do oneOf "\n\r"
         return ()
    <?> "end of line"

item :: Parser String
item = do entry <- manyTill anyChar (try eol <|> try delimiter <|> eof)
          return entry

items :: Parser [String]
items = do result <- many item
           return result
Run Code Online (Sandbox Code Playgroud)

当我运行parseTest items "a|b|c"上面的代码时,我收到以下错误:

*** Exception: Text.ParserCombinators.Parsec.Prim.many: 
combinator 'many' is applied to a parser that accepts …
Run Code Online (Sandbox Code Playgroud)

parsing haskell runtime-error parsec

5
推荐指数
1
解决办法
1479
查看次数

hsc2hs:使用Haskell改变C结构

我正在尝试编写一个与C通信的Haskell程序(最终通过GHC-iOS为iOS).我想让它从C传递一个字符串到Haskell,让Haskell处理它,然后通过hsc2s将一些数据类型从Haskell返回到C Structs.我找不到一个简单明了的教程是不成功的.Haskell唯一需要的是String,没有别的.

我对第一部分没有任何问题,将一个字符串传递给Haskell.

testPrint :: CString -> IO ()
testPrint c = do 
    s <- peekCString c
    putStrLn s
Run Code Online (Sandbox Code Playgroud)

出于测试目的和将来的参考,我只希望能够处理如下的内容.

C结构

struct testdata {
   char *a;
   char *b;
   int c;
};
Run Code Online (Sandbox Code Playgroud)

Haskell数据类型

data TestData =  TestData {
  a :: String,
  b :: String,
  c :: Int
} deriving Show

-- not sure what the type would look like
testParse :: CString -> TestData
Run Code Online (Sandbox Code Playgroud)

我知道我需要将TestData类型化为Storable并实现peek,poke,sizeOf和alignment,但我需要先看一个简单的例子才能真正理解它.大多数教程都需要外部库,使其比需要的更复杂.

以下是我看过的资源:

Stackoverflow - 如何使用hsc2hs绑定到常量,函数和数据结构?

Haskell Cafe - 初学者的FFI

将Haskell接口编写为C代码:hsc2hs

Haskell Wikibook - FFI

编辑:目前我被卡住的地方(在C中调用setFoo时会出现分段错误)

Haskell代码片段

instance …
Run Code Online (Sandbox Code Playgroud)

c haskell types ffi hsc2hs

5
推荐指数
1
解决办法
800
查看次数

C#列表列表的最后一个元素

这可能是一个非常简单的问题,我想访问最后一个元素:

List<string>[] list = new List<string>[3];
Run Code Online (Sandbox Code Playgroud)

所以每个列表里面有3个元素,但我应该如何访问这些列表中的最后一个?

c# list

3
推荐指数
2
解决办法
4万
查看次数

使用Perl Regex提取第n次出现

我试图找到解析这样一行的最佳方法:


Explicit|00|11|Hello World|12 3 134||and|blah|blah|blah

我只想提取第6和第7纵杆之间的东西
我试过类似的东西

if ($line =~ /^(.*\|){6}(\w*)\|/ ) {  
    print $2;  
}
Run Code Online (Sandbox Code Playgroud)

问题是,第一部分似乎与最长的序列匹配,因为.*,或许我应该使用不同的东西.在垂直条之间,有字母数字字符,空格和标点符号.

我应该匹配它们之间的最短距离吗?

regex perl

3
推荐指数
1
解决办法
3012
查看次数

Haskell Parsec:撤消失败的许多人

我在这里有一些代码用于将URI路径解析为字符串列表.例如/user/home会成为["user", "home"].

pathPiece :: Parser String   
pathPiece = do
      char '/'
      path <- many1 urlBaseChar
      return path

uriPath :: Parser [String]
uriPath = do
    pieces <- many pathPiece
    try $ char '/'
    return pieces

parseUriPath :: String -> [String]
parseUriPath input = case parse uriPath "(unknown)" input of
                   Left  _  -> []
                   Right xs -> xs
Run Code Online (Sandbox Code Playgroud)

但是,如果路径以另一个路径结束,/例如/user/home/应该是合法路径,则解析器将失败.这是因为pathPiece无法解析最后一个,/因为没有后续的urlBaseChars.我想知道你如何解决它,直到它失败,如果它失败你撤消字符消耗.

parsing haskell parsec

3
推荐指数
1
解决办法
176
查看次数

Flask、Apache、mod_wsgi:无法在服务器端保存文件

在客户端,我通过 post from 发送图像form enctype=multipart/form-data,在服务器端,我将其保存到目录中。所有这些都在我的计算机上本地运行,并直接使用python app.py.

这是我设置文件保存的参考:

http://flask.pocoo.org/docs/patterns/fileuploads/

在实际的生产服务器上,我使用 Apache 和 mod_wsgi 运行它,我根据这个网站设置:

http://flask.pocoo.org/docs/deploying/mod_wsgi/

对于目录的权限我曾尝试chown -R 777chown -R www-data:www-data其中对于用户看起来相关的Apache这样的代码:WSGIDaemonProcess app user=www-data group=www-data threads=5

但是,在这一切之后,我仍然无法保存文件。我只是在尝试保存文件时收到 500 HTTP 错误。

这是相关的烧瓶代码:

UPLOAD_FOLDER = '/images/'
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

@app.route('/upload_ocr_images', methods=['GET', 'POST'])
def upload_images():
    if request.method == 'POST':
        files = request.files.getlist("images[]")
        for file in files:
            if allowed_file(file.filename):
                filename = secure_filename(file.filename)
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    return redirect(url_for('home'))
Run Code Online (Sandbox Code Playgroud)

在这一点上,我想知道是否需要在 Apache 方面设置一些东西。

python apache file-upload file flask

2
推荐指数
1
解决办法
2321
查看次数

无法在Perl中按行号读取数组中的文件

我正在处理两个文件,所以当我循环浏览一个文件时,我需要查看另一个文件的一部分,我在其中遇到的信息将是顺序的.所以我认为最好的方法是跟踪行号:
open(PARSED, "< file.txt") or die$!;
my @parsedFile = < PARSED >;
my $line = 0;
my $size = @parsedFile;
# This next part is in a loop, but the only important thing is this next line
print $parsedFile[$line];

即使$ line的值增加,它也 只会打印,但如果我执行以下操作则没有问题: 我甚至尝试了多种尝试从@parsedFile中提取单行但没有运气的变体.
foreach (@parsedFile){ print $_; }

arrays perl

0
推荐指数
1
解决办法
521
查看次数

Haskell:忽略一个案例或使用when

我还有很多东西要学习Haskell,我在使用下面的代码时遇到了一些麻烦.我可以执行以下操作,但当然它会创建编译器警告,因为并非所有情况都显示在内case address s of,我想确保那些警告不存在:

postAddTenantR :: Handler Value
postAddTenantR = do
    newTenantData <- parseJsonBody :: Handler (Result NewTenant)
    case newTenantData of
      Success s -> runDB $ do
        newTenantGroup <- insert $ TenantGroup
        _ <- insert $ Tenant (firstName s) (lastName s) (Just newTenantGroup)

        case address s of
          Just newAddress -> do
            newProperty <- insert $ Property newAddress
            insert $ Lease Nothing Nothing Nothing newProperty newTenantGroup

        returnJson $ ProcessingResponse True Nothing
      Error e -> returnJson $ ProcessingResponse False (Just …
Run Code Online (Sandbox Code Playgroud)

haskell if-statement yesod

0
推荐指数
1
解决办法
160
查看次数

标签 统计

haskell ×4

parsec ×2

parsing ×2

perl ×2

regex ×2

apache ×1

arrays ×1

c ×1

c# ×1

c++ ×1

c++11 ×1

django ×1

ffi ×1

file ×1

file-upload ×1

flask ×1

hsc2hs ×1

if-statement ×1

list ×1

null ×1

python ×1

runtime-error ×1

sql ×1

sqlalchemy ×1

types ×1

unicode ×1

unique ×1

utf-8 ×1

yesod ×1